是否有任何数组函数可以获得预期的结果?

时间:2013-07-11 06:40:19

标签: php arrays

是否有任何数组函数可以获得预期的结果?

我的阵列

$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循环来做到这一点。但我正在寻找一个数组函数..

4 个答案:

答案 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)

答案 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');