PHP从多维数组中提取值,无需循环[duplicate]

brjng4g3  于 2023-01-16  发布在  PHP
关注(0)|答案(5)|浏览(172)
    • 此问题在此处已有答案**:

Is there a function to extract a 'column' from an array in PHP?(15个答案)
4个月前关闭。
我只是想知道在PHP中是否有可能从数组中提取值,而不必循环。下面是我的数组的一部分,所以你知道我的意思;

Array
(
[0] => Array
    (
        [0] => 76
        [1] => Adventures of Huckleberry Finn
    )

[1] => Array
    (
        [0] => 65
        [1] => Adventures of Huckleberry Finn
    )

[2] => Array
    (
        [0] => 59
        [1] => Bookcases
    )
)

我在每个数组中寻找整数[0]--有没有一个函数可以比foreach循环(我通常这样做)更快地完成这个任务?
谢谢。

cbjzeqam

cbjzeqam1#

当然,您正在寻找array_column函数。

$newArray = array_column($originalArray,'0');

正如PHP手册中所述,使用此函数可以从数组的数组中提取所需的唯一信息。它通常与关联数组一起使用,但也可以使用数字作为参数,它也可以工作。

bvhaajcl

bvhaajcl2#

选择一个清晰的循环,你的同事们会感谢你的。它可能和其他解决方案一样快,清晰的代码比模糊的循环更可取。
仅举一例:你需要多少秒才能看到:

list($b) = call_user_func_array('array_map',array_merge(array(null),$a));

......会吗?
很管用。别用它。

c3frrgcw

c3frrgcw3#

你最终的意思是array_walk......但这也是某种循环吗?答案是否定的。
我不认为有任何更快的方法(除了用C:-P编写自己的扩展)

kr98yfug

kr98yfug4#

试试看:

array_walk($array, function(&$v) { $v = $v[0]; });

这应该会将数组转换为您想要的格式。

7hiiyaii

7hiiyaii5#

您可能会查找array_walk()

$newArray = array();
$myCallback = function($key) use(&$newArray){
  $newArray[] = $key[0];
};

array_walk($myArray, $myCallback);

当然,如果您在变量$myArray中包含上述数组,则会出现这种情况

相关问题