资讯专栏INFORMATION COLUMN

array_map 等php回调函数使用问题(关联数组下标获取)

shiweifu / 666人阅读

摘要:前言我自己用此类回调函数,来替代纯粹是用为代码的简洁性,让代码更好看。我有点代码小洁癖当迭代处理一个一维索引数组时,在回调函数内是无法获取到当时元素索引的。目的在回调体内获取迭代关联数组的下标值。

前言:我自己用此类回调函数,来替代 foreach 纯粹是用为代码的简洁性,让代码更好看。(我有点代码小洁癖~)

1、array_reduce

当迭代处理一个一维索引数组时,在回调函数内是无法获取到当时元素索引的。所以想要获取时,需得借助一个外部变量。

目的:把 $arr 遍历到 标签内(就是拼接option字符串)

$arr = [
    0 => "全部",
    1 => "a",
    2 => "b",
    3 => "c",
];

解决:

$index   = 0;

$options = array_reduce($data, function($carry, $item) use (&$index){
              ## $index则为当前两个元素 $item 的索引
              return $carry . "";
            }, "");
            
var_dump($options);

输出为

2、array_map(callable $callback , array $array1 [, array $... ] )

很多情况下,迭代的数据一般为一个 二维关联数组,但 array_map 本身在回调函数的函数体内无法获取到 关联数组的下标 的。

目的:在回调体内获取迭代关联数组的下标值。

解决:可以把关联数组的下标通过 array_map()的第三个形参把下标传进去。

$arr = [
    "a" => 1,
    "b" => 2,
    "c" => 3
];

$res =  array_map(function($item, $key){

             echo "$arr[" . $key . "]=" . $item . "
"; }, $arr, array_keys($arr));

输出结果为

$arr[a]=1
$arr[b]=2
$arr[c]=3

题外话,有个典型的应用,也可以这样用。打个比方,如入库商品。

辣条 [spec] => Array ( ["attr"] => Array ( [0] => 颜色 [1] => 口感 [2] => 副作用 ) ["value"] => Array ( [0] => 红色 [1] => 辣 [2] => The `菊花` is hot ) ) ) */ ## 处理规格信息,使其可以批量添加 $arr["spec"] = array_map(function($item, $key){ return [ "attr" => $key, "value" => $item, ]; }, $arr["spec"]["value"], $arr["spec"]["attr"]); print_r($arr); /* Array ( [goods] => 辣条 [spec] => Array ( [0] => Array ( [attr] => 颜色 [value] => 红色 ) [1] => Array ( [attr] => 口感 [value] => 辣 ) [2] => Array ( [attr] => 副作用 [value] => The `菊花` is hot ) ) ) */ # 这样处理好数组就特别方便,数组中 `商品的规格` 的就可以批量添加了
参考资料:

laravel框架代码 - 集合 的封装 -> 传送门

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/29262.html

相关文章

  • PHP_数组

    摘要:李寻欢索引数组索引数组,元素的值和下标不存在逻辑关系,而下标只表示值索引位置。键和值,同时向下移动指针获得元素信息,返回的是,关联和索引数组其中关联数组部分。 数组 数据由元素组成,元素由键和值组成 数组分类 关联数组关联数组,元素的下标与元素的值存在逻辑上的关系,称之为关联数组。指的是,键和值之间存在管理。 $a1 = array(name => 李寻欢, age => 34); ...

    zone 评论0 收藏0
  • PHP提取多维数组指定一列的方法大全

    摘要:中对多维数组特定列的提取,是个很常用的功能,正因为如此,在版本之后,添加了一个专用的函数。变种方法如下,意为把数组的每一项值的开头值移出,并获取移除的值作为新数组。注意此时新数组的键仍是原数组的键,如下。 PHP中对多维数组特定列的提取,是个很常用的功能,正因为如此,PHP在5.5.0版本之后,添加了一个专用的函数array_column()。当然,如果你的PHP版本低于5.5.0,就...

    roundstones 评论0 收藏0
  • 10个必须掌握的PHP关联数组使用技巧

    摘要:额外的数组元素可以象下面这样追加如果你正在处理数字索引数组,你可能想使用显示命名的函数前置和追加元素,如和函数,但这些函数不能操作关联数组。 在使用 PHP 进行开发的过程中,或早或晚,您会需要创建许多相似的变量,这时候你可以把数据作为元素存储在数组中。数组中的元素都有自己的 ID,因此可以方便地访问它们。 关联数组 关联数组,它的每个 ID 键都关联一个值。在存储有关具体命名的值的数...

    bawn 评论0 收藏0
  • 遍历PHP数组的6种方式

    摘要:遍历完成后返回一个新的数组你可以同时处理多个数组你好吗原罪你好吗原罪是的,遍历的次数以最长的数组为准。假如你处理的是二维数组,处理方式也是万变不离其宗的。 在PHP的日常操作中,数组是最常出现的结构,而我们几乎每天都在处理数组相关的内容。那么问题来了,你一般怎么遍历并处理数组。 1、foreach 很熟悉吧,是不是你的最爱? $arr = [a, b, c]; foreach ($a...

    awkj 评论0 收藏0
  • PHP 每日函数】第 03 周期

    摘要:说明获取数组中部分的或者所有的键名说明为数组的每个元素应用回调函数说明合并一个或者多个数组说明对多个数组或者多维数组进行排序具体可查看官网说明弹出数组中最后一个单元说明计算数组中所有值的乘积之前因为一些事,就没有每天都更,以后会坚持保持 2019-02-27 array_keys() array_keys ( array $array [, mixed $search_value = ...

    骞讳护 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<