array_map 默认接受两个参数,第一个为用户自定义函数名称,第二个参数为数组。可以根据用户自定义函数的处理参数个数,来扩充array_map的第2+个参数

先来两个平常数组,用array_map处理一个数组

$arr1=array('a','b','c');

$arr2=array('x','y','z');

$z=array_map(create_function('$item', 'return "i am ".$item ;'), $arr1);

输出$z结果

array(3) {
  [0]=>
  string(6) "i am a"
  [1]=>
  string(6) "i am b"
  [2]=>
  string(6) "i am c"
}
[Finished in 0.1s]

上面的例子等价于如下代码:

function tmp($arr1){return "i am ".$arr1;}
$b=array_map('tmp',$arr1);

输出$b结果:

array(3) {
  [0]=>
  string(6) "i am a"
  [1]=>
  string(6) "i am b"
  [2]=>
  string(6) "i am c"
}
[Finished in 0.1s]

参考下面两个数组列子
再次重复:
create_function 两个参数都是字符串 string args string code,分别代表参数列表和函数体

$arr1=array('a','b','c');

$arr2=array('x','y','z');

$z=array_map(create_function('$arr1,$arr2', 'return "i am ".$arr1." ".$arr2 ;'), $arr1,$arr2);

输出$z结果:

array(3) {
  [0]=>
  string(8) "i am a x"
  [1]=>
  string(8) "i am b y"
  [2]=>
  string(8) "i am c z"
}

以上等价于

function tmp($arr1,$arr2){return "i am ".$arr1." ".$arr2;}
$b=array_map('tmp',$arr1,$arr2);

输出$b结果

array(3) {
  [0]=>
  string(8) "i am a x"
  [1]=>
  string(8) "i am b y"
  [2]=>
  string(8) "i am c z"
}
[Finished in 0.1s]

牙小木木
1.5k 声望80 粉丝

iamtb.cn