PHP从多维数组中提取值而没有循环

时间:2013-04-05 22:58:31

标签: php arrays loops foreach extract

我只是想知道是否可以在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循环更快地执行此操作(我通常这样做的方式)?

感谢。

5 个答案:

答案 0 :(得分:2)

当然,您正在寻找array_column功能。

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

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

答案 1 :(得分:1)

您可能正在寻找array_walk()

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

array_walk($myArray, $myCallback);

如果您在变量$ myArray

中使用了上面的数组,那当然是这样

答案 2 :(得分:0)

你最终意味着array_walk ......但这也是某种循环?然后:答案是否定的。

我认为没有更快的方法(除了在C :-P中编写自己的扩展名)

答案 3 :(得分:0)

尝试:

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

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

答案 4 :(得分:0)

明确循环,你的编码员会感谢你。它可能比任何其他解决方案快得多,并且清晰的代码优于不明显的循环避免。

就像一个例子:你需要多少秒才能看到:

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

...呢?

诀窍。不要使用它。