有一个二维数组,如下:
$arr = array(
0 => array(
'id' => 1,
'a' => 'xxxx',
'b' => 'abc',
),
1 => array(
'id' => 2,
'a' => 'yyyy',
'b' => 'abcd',
),
2 => array(
'id' => 4,
'a' => 'zzzz',
'b' => 'abcde',
),
);
$ids = array_map('array_shift',$arr);
$ids = array_column($arr,'id');
$newArr = array_reduce($arr, create_function('$v,$w', '$v[$w["id"]]=$w["a"];return $v;'));
$arr2 = array_map('reset',$arr);
$arr2 = array_map('end',$arr);
3:还可以使用 array_reduce方法,不过代码略多,不过这个方法的想象空间(针对别的数组取值操作)还是蛮大的:
$arr2 = array_reduce($arr, create_function('$result, $v', '$result[] = $v["name"];return $result;'));
array_reduce方法用回调函数迭代地将对数组的值进行操作,而create_function用于一个匿名方法做回调用,这个匿名方法的参数$result为上一次迭代产生的值,$v是当前的值,内部实现既为获取到数组$arr每一项的”name”的值并push到新$result数组;
发表评论 取消回复