是否有任何数组函数可以获得预期的结果?
$a = array(
[0] => array( 'id' => 6 ),
[1] => array( 'id' => 5 ),
[2] => array( 'id' => 8 ),
[3] => array( 'id' => 4 ),
);
$a = array(
[0] => 6,
[1] => 5 ,
[2] => 8 ,
[3] => 4,
);
我可以使用foreach循环来做到这一点。但我正在寻找一个数组函数..
答案 0 :(得分:1)
严格地说,是的,有一个函数array_walk()
:
array_walk($a, function (&$value) {
$value = $value['id'];
});
但在这种情况下,foreach循环可能更有效:
foreach ($a as &$value) {
$value = $value['id'];
}
与array_walk相比,foreach循环的开销非常小,而array_walk必须在回调函数的每次调用时创建并销毁函数调用堆栈。
请注意,在每种情况下,$ value都是通过引用传递的(使用&运算符)。这意味着阵列已就地更改,无需复制阵列。
答案 1 :(得分:1)
这将在$a
$a = array_map('current', $a);
答案 2 :(得分:0)
在这种情况下,Foreach似乎更有效率。
$resultArray = array();
foreach ($a as $key => $value){
$resultArray[] = $value['id'];
}
答案 3 :(得分:-1)
以下是如何使用array_walk,
$a = array(
0 => array( 'id' => 6 ),
1 => array( 'id' => 5 ),
2 => array( 'id' => 8 ),
3 => array( 'id' => 4 ),
);
array_walk($a, function ($ar, $val) {
global $a;
$a[$val] = $ar['id'];
}
);
生成的数组将生成
(
[0] => 6
[1] => 5
[2] => 8
[3] => 4 )
对于PHP版本5.5及以上版本,以下命令应该有效。
$a = array_column($a, 'id');