2

我有一个这样的数组

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或东西?

4

3 回答 3

4

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

$array = array_column($companies, 'company');
echo implode(',', $array);
于 2013-09-26T17:05:26.903 回答
1

按照Fu Xuarray_column()的建议使用:

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

演示!

于 2013-09-26T17:10:29.417 回答
1

有没有更有效的方法来达到相同的结果?

高效是一个广义的术语。我假设有效的意思是native。在这种情况下,是的,在 PHP 5.5+ 中,您可以使用Fu Xuarray_column()的回答。

否则,在 PHP < 5.5 中,没有。那就是没有什么原生的。虽然您可以组合数十个原生PHP 数组函数中的任何一个来实现相同的目的,但它们只是给猫剥皮的更多方法。

于 2013-09-26T17:10:38.227 回答