Необходимо создать список, состоящий из всех значений, хранящихся в строке массива определенного ключа (product_id). В настоящее время выполнение print_r моей переменной $ bestsellers создает следующий массив:
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');
}
…который не дал результата вообще.
Надеюсь, кто-нибудь может подсказать мне, где я ошибаюсь. Спасибо!
Вложенные значения являются объектами, а не массивами (разве вы не видите stdClass Object
в выходной?). array_column
для 2-мерных массивов. Вам нужно получить доступ к свойствам, используя синтаксис объекта.
$ids = array_map(function($x) { return $x->product_id; }, $bestsellers);
Для дальнейшего использования array_column
будет работать для этого в PHP 7, так что вы должны использовать PHP 5.
Для PHP 7 ваш код
$ids = array_column($bestsellers, 'product_id');
будет делать то, что вы хотите.