php 关联数组 下标,array |
您所在的位置:网站首页 › flexa软件使用 › php 关联数组 下标,array |
前言:我自己用此类回调函数,来替代 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 . '' . $item . ''; }, ''); var_dump($options); 输出为 全部abc 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 题外话,有个典型的应用,也可以这样用。打个比方,如入库商品。 ## 接受商品的基本信息与规格信息 $arr = $_GET; print_r($arr); /* Array ( [goods] => 辣条 [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框架代码 - 集合 的封装 -> 传送门 |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |