array_map 回调函数使用总结

755 阅读1分钟

1、array_map 处理关联数组key value

函数将用户自定义函数作用到数组中的每个值上,并返回用户自定义函数作用后的带有新值的数组,若函数作用后无返回值,则对应的新值数组中为空

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

很多情况下,迭代的数据一般为一个 二维关联数组,但 array_map 本身在回调函数的函数体内无法获取到 关联数组的下标key。通过以下方式可以,关键就在于第三个参数的使用。

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

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

             echo '$arr[' . $key . ']=' . $item . '<br>';
             
        }, $arr, array_keys($arr));

2、array_reduce

array $array , callable $callback [, mixed $initial = NULL ] ) : mixed

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

目的:把 $arr 遍历到

<select><option></option></select>

标签内(就是拼接option字符串)

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

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