array_map 将回调函数作用到给定数组的单元上 &reftitle.description; arrayarray_map callablecallback arrayarr1 array... array_map 返回一个数组,该数组包含了 arr1 中的所有单元经过 callback 作用过之后的单元。callback 接受的参数数目应该和传递给 array_map 函数的数组数目一致。 &reftitle.parameters; callback 对每个数组的每个元素作用的回调函数。 arr1 将被回调函数(callback)执行的数组。 array 将被回调函数(callback)执行的数组列表。 &reftitle.returnvalues; 返回一个数组,该数组的每个元素都数组(arr1)里面的每个元素经过回调函数(callback)处理了的。 &reftitle.examples; <function>array_map</function> 例子 ]]> 这使得 $b 成为: 1 [1] => 8 [2] => 27 [3] => 64 [4] => 125 ) ]]> <function>array_map</function> using a lambda function (as of PHP 5.3.0) ]]> 2 [1] => 4 [2] => 6 [3] => 8 [4] => 10 ) ]]> <function>array_map</function> - 使用更多的数组 $m)); } $a = array(1, 2, 3, 4, 5); $b = array("uno", "dos", "tres", "cuatro", "cinco"); $c = array_map("show_Spanish", $a, $b); print_r($c); $d = array_map("map_Spanish", $a , $b); print_r($d); ?> ]]> &example.outputs; The number 1 is called uno in Spanish [1] => The number 2 is called dos in Spanish [2] => The number 3 is called tres in Spanish [3] => The number 4 is called cuatro in Spanish [4] => The number 5 is called cinco in Spanish ) // printout of $d Array ( [0] => Array ( [1] => uno ) [1] => Array ( [2] => dos ) [2] => Array ( [3] => tres ) [3] => Array ( [4] => cuatro ) [4] => Array ( [5] => cinco ) ) ]]> 通常使用了两个或更多数组时,它们的长度应该相同,因为回调函数是平行作用于相应的单元上的。如果数组的长度不同,则最短的一个将被用空的单元扩充。 本函数一个有趣的用法是构造一个数组的数组,这可以很容易的通过用 &null; 作为回调函数名来实现。 建立一个数组的数组 ]]> &example.outputs; 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 ) ) ]]> 如果数组参数里面有字符串的键,那么返回的数组就会包含字符串的键,仅且仅当只传入一个数组的时候(试了下,就是原数组返回,没变化啊,这不是蛋疼么?)。 如果不止一个数组被传入,那么返回的数组的的键都是整型。 <function>array_map</function> - with string keys "value"); function cb1($a) { return array ($a); } function cb2($a, $b) { return array ($a, $b); } var_dump(array_map("cb1", $arr)); var_dump(array_map("cb2", $arr, $arr)); var_dump(array_map(null, $arr)); var_dump(array_map(null, $arr, $arr)); ?> ]]> &example.outputs; array(1) { [0]=> string(5) "value" } } array(1) { [0]=> array(2) { [0]=> string(5) "value" [1]=> string(5) "value" } } array(1) { ["stringkey"]=> string(5) "value" } array(1) { [0]=> array(2) { [0]=> string(5) "value" [1]=> string(5) "value" } } ]]> &reftitle.seealso; array_filter array_reduce array_walk create_function &seealso.callback;