今天我了解到一个特殊案例array_map()
在 PHP 中,文档中作为旁注提到了这一点:
示例 #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
)
)
如果数组参数包含字符串键,则返回的数组
当且仅当传递了一个数组时才会包含字符串键。
如果传递多个参数,则返回的数组始终具有
整数键。
(试试看) http://3v4l.org/070WP
但仅此而已。不再解释。我明白,这与
$d = array_map(function() { return func_get_args(); }, $a, $b, $c);
但为什么有人想要或期望这是默认行为呢?它的工作原理是否有技术原因,例如实施的副作用?或者这只是一个随机的“让我们让这个函数再做一件事”的决定(看着你,array_multisort()
)?
这似乎是 _array_map_ 中的特殊情况,但仅在该示例中记录。NULL通常不允许作为回调(如果您尝试将其与call_user_func()
它报告错误),但在 _array_map()_ 中是允许的。它治疗NULL
这意味着它应该简单地创建一个参数数组。
这很有用,因为array
作为回调也是无效的,因为它是语言构造,而不是函数。所以你不能写:
$d = array_map('array', $a, $b, $c);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)