从特定键的嵌套数组行中收集所有值

时间:2017-11-14 20:12:41

标签: php arrays multidimensional-array row array-column

需要创建一个列表,该列表包含存储在特定键(product_id)的数组行中的所有值。目前,执行$ bestsellers变量的print_r会生成以下数组:

Array
  (
    [0] => stdClass Object
        (
            [product_id] => 178
            [order_item_qty] => 9
        )

    [1] => stdClass Object
        (
            [product_id] => 233
            [order_item_qty] => 4
        )

    [2] => stdClass Object
        (
            [product_id] => 179
            [order_item_qty] => 1
        )
  )

其他SO答案让我尝试:

$ids = array_column($bestsellers, 'product_id');

...但是这产生了一个空数组,我猜是因为我想要抓住的行嵌套在那里?考虑到这一点,我试过

foreach($bestsellers as $bestseller) {
    $ids = array_column($bestsellers, 'product_id');
}

......根本没有产生任何结果。 希望有人可以帮我找到我出错的地方。谢谢!

2 个答案:

答案 0 :(得分:1)

嵌套值是对象,而不是数组(你不能在输出中看到stdClass Object吗?)。 array_column用于二维数组。您需要使用对象语法访问属性。

$ids = array_map(function($x) { return $x->product_id; }, $bestsellers);

答案 1 :(得分:1)

供将来参考array_column will work for this in PHP 7,因此您必须使用PHP 5。

对于PHP 7,您的代码

$ids = array_column($bestsellers, 'product_id');

会做你想要的。

See the difference here on 3v4l.org.