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


Is there any array function by which I can get the expected result?

有没有可以得到预期结果的数组函数?

我的阵列

$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');