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 循环更快的函数(我通常这样做的方式)?

谢谢。

4

5 回答 5

9

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

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

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

于 2016-02-23T15:30:06.407 回答
1

寻找一个清晰的循环,你的程序员同事会感谢你的。它可能与任何其他解决方案一样快或快,并且清晰的代码比晦涩的循环躲避更可取。

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

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

...做?

行得通。不要使用它。

于 2013-04-05T23:43:06.020 回答
0

您最终的意思是 array_walk ...但这也是某种循环?那么:答案是否定的。

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

于 2013-04-05T23:00:33.133 回答
0

尝试:

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

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

于 2013-04-05T23:05:49.513 回答
0

您可能正在寻找 array_walk()

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

array_walk($myArray, $myCallback);

这当然是如果你在变量 $myArray 中有你的数组

于 2013-04-05T23:10:19.823 回答