【问题标题】:getting array values without foreach loop在没有 foreach 循环的情况下获取数组值
【发布时间】:2014-03-31 11:35:54
【问题描述】:

在这个例子中,有没有什么方法可以在不使用 foreach 循环的情况下获取一个数组中的所有值?

<?php 
$foo = array(["type"=>"a"], ["type"=>"b"], ["type"=>"c"]);

我需要的输出是array("a", "b", "c")

我可以用这样的东西来完成它

$stack = [];

foreach($foo as $value){
  $stack[] = $value["type"];
}

var_dump($stack); 

但是,我正在寻找不涉及使用 foreach 循环的选项。

【问题讨论】:

  • 你想使用 for 循环吗?
  • @magnetronnie 更糟:)

标签: php arrays foreach


【解决方案1】:

如果您使用的是 PHP 5.5+,则可以使用 array_column(),如下所示:

$result = array_column($foo, 'type');

如果您想要一个带有数字索引的数组,请使用:

$result = array_values(array_column($foo, 'type'));

如果您使用的是以前的PHP版本,暂时无法升级,可以使用同一作者编写的Userland implementation of array_column()函数。

或者,您也可以使用array_map()。这与循环基本相同,只是循环没有明确显示。

$result = array_map(function($arr) {
   return $arr['type'];
}, $foo);

【讨论】:

  • 遗憾的是我没有使用我应该使用的 5.5。
  • array_values() 在这里不是必需的,因为array_column() 将返回所需的数组
  • @AlmaDo:我知道。我只是想也许 OP 想要一个带有数字索引的数组。
  • 1.链接坏了。 2.更新PHP比只用一个函数的外部lib要好得多
  • array_map 有点类似于循环恕我直言。我正在通过结合each()array_values() 来寻找一些东西,我想这是不可能的。还是谢谢
【解决方案2】:

在 PHP 5.5 中使用 array_column()

$foo = array(["type"=>"a"], ["type"=>"b"], ["type"=>"c"]);
$result = array_column($foo, 'type');

或者在以前的版本中使用array_map()

$result = array_map(function($x)
{
   return $x['type'];
}, $foo);

注意:循环仍会执行,但会隐藏在上述函数中。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-02-24
    • 2011-01-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-09-02
    • 1970-01-01
    • 2020-06-21
    相关资源
    最近更新 更多