-5

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

我的阵列

$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

4 回答 4

1

严格来说,是的,有一个功能array_walk()

array_walk($a, function (&$value) {
    $value = $value['id'];
});

但在这种情况下,foreach 循环可能更有效:

foreach ($a as &$value) {
    $value = $value['id'];
}

与 array_walk 相比,foreach 循环的开销非常小,后者必须在每次调用回调函数时创建和销毁函数调用堆栈。

请注意,在每种情况下,$value 都是通过引用传递的(使用 & 运算符)。这意味着数组已就地更改,无需复制数组。

于 2013-07-11T06:46:44.387 回答
1

这将给出预期的输出$a

$a = array_map('current', $a);

参考

于 2013-07-11T06:48:58.893 回答
0

在这种情况下,Foreach 似乎更有效。

$resultArray = array();
foreach ($a as $key => $value){
    $resultArray[] = $value['id'];
}
于 2013-07-11T06:49:39.100 回答
-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');
于 2013-07-11T06:48:54.037 回答