如何从数组中有效地获取特定值?

时间:2013-09-26 17:00:40

标签: php arrays performance for-loop

我有一个像这样的数组

array(3) {
  [0]=>
  array(2) {
    ["company"]=>
    string(15) "Company A"
    ["value"]=>
    string(6) "100"
  }
  [1]=>
  array(2) {
    ["company"]=>
    string(9) "Company B"
    ["value"]=>
    string(6) "150"
  }
  [2]=>
  array(2) {
    ["company"]=>
    string(13) "Company C"
    ["value"]=>
    string(6) "200"
  }
}

现在我想获取所有公司名称并通过逗号连接它们。我可以这样:

foreach ($array as $a) {
    $companies[] = $a['company'];
}
$company_names = implode(',', $companies);
var_dump($company_names);

打印

string(29) "Company A,Company B,Company C"

所以说:它有效。但这对我来说似乎效率低下,那就是循环。

是否有更有效的方法来获得相同的结果?例如。使用array_keys或其他内容?

3 个答案:

答案 0 :(得分:4)

您可以使用array_column()但它需要PHP版本大于5.5:

$array = array_column($companies, 'company');
echo implode(',', $array);

答案 1 :(得分:1)

按照 Fu Xu

的建议使用array_column()
$array = array_column($companies, 'company');
echo implode(',', $array);

Demo!

答案 2 :(得分:1)

  

是否有更有效的方法来获得相同的结果?

高效是一个广义的术语。我假设高效表示 native 。在这种情况下,是的,在PHP 5.5+中,您可以将array_column()用作answered by Fu Xu

否则,在PHP< 5.5,没有。那就是没有 native 。虽然你可以将几十个本地PHP array functions中的任何一个组合起来以实现同样的目的,但它们只是让猫皮肤更多的方法。