有没有可以得到预期结果的数组函数?
我的阵列
$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循环来完成。但是我正在寻找一个数组函数。。
严格来说,是的,有一个函数array_walk()
:
array_walk($a, function (&$value) {
$value = $value['id'];
});
但在这种情况下,foreach循环可能更有效:
foreach ($a as &$value) {
$value = $value['id'];
}
与array_walk相比,foreach循环的开销非常小,后者必须在每次调用回调函数时创建和销毁函数调用堆栈。
请注意,在每种情况下,$value都是通过引用传递的(使用&运算符)。这意味着数组已更改到位,不需要复制数组。
这将在$a
中给出预期输出
$a = array_map('current', $a);
参考
array_map
—将回调应用于给定数组的元素current
—返回数组中的当前元素
Foreach在这种情况下似乎更有效率。
$resultArray = array();
foreach ($a as $key => $value){
$resultArray[] = $value['id'];
}
以下是如何使用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');