需要创建一个列表,该列表包含存储在特定键(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');
}
......根本没有产生任何结果。 希望有人可以帮我找到我出错的地方。谢谢!
答案 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');
会做你想要的。