今天我在PHP中了解了array_map()
的一个特例,在文档中作为旁注提到:
示例#4创建数组数组
<?php $a = array(1, 2, 3, 4, 5); $b = array("one", "two", "three", "four", "five"); $c = array("uno", "dos", "tres", "cuatro", "cinco"); $d = array_map(null, $a, $b, $c); print_r($d); ?>
以上示例将输出:
Array ( [0] => Array ( [0] => 1 [1] => one [2] => uno ) [1] => Array ( [0] => 2 [1] => two [2] => dos ) [2] => Array ( [0] => 3 [1] => three [2] => tres ) [3] => Array ( [0] => 4 [1] => four [2] => cuatro ) [4] => Array ( [0] => 5 [1] => five [2] => cinco ) )
如果数组参数包含字符串键,则返回数组 当且仅当传递了一个数组时,才会包含字符串键。 如果传递了多个参数,则返回的数组始终具有 整数键。
但就是这样。没有更多的解释。我明白,这跟
一样$d = array_map(function() { return func_get_args(); }, $a, $b, $c);
但为什么有人想要或期望这是默认行为?有没有技术上的原因,为什么它的工作原理,如实施的副作用?或者这只是一个随机的“让这个功能再做一件事”的决定(看着你,array_multisort()
)?
答案 0 :(得分:3)
这似乎是_array_map_中的一个特例,但它只在该示例中记录。 NULL 通常不允许作为回调(如果您尝试将其与call_user_func()
一起使用,则报告错误),但在_array_map()_中允许使用它。它将NULL
视为应该只创建一个参数数组。
这很有用,因为array
作为回调也无效,因为它是语言构造,而不是函数。所以你不能写:
$d = array_map('array', $a, $b, $c);