PHP печать нескольких значений из массива с подстановочным знаком

Я пытаюсь распечатать несколько значений через PHP из массива, который содержит подстановочный знак. Мне удалось выработать элемент подстановки из другого вопроса здесь, но сейчас я пытаюсь напечатать несколько вейлов из нескольких сущностей. Я работаю с (12271 объект stdClass является подстановочным знаком, и первый объект stdClass является $ order):

stdClass Object
(
[products]
(
[12271] => stdClass Object
(
[model] => MODEL1
[qty] => 1
)

Таким образом, приведенный ниже код работает и правильно печатает ‘MODEL1 1x’

<?php
$model = current((array)$order->products)->model;
$qty = current((array)$order->products)->qty;
print $model.' '.$qty.'x';
?>

Однако, если присутствует несколько объектов, таких как

stdClass Object
(
[products]
(
[12271] => stdClass Object
(
[model] => MODEL1
[qty] => 1
)
[45897] => stdClass Object
(
[model] => MODEL2
[qty] => 2

Я не знаю, как напечатать несколько объектов, чтобы распечатать:

«МОДЕЛЬ1 1x» и «МОДЕЛЬ2 2x»

Любая помощь приветствуется. Для справки я пытаюсь распечатать значения из заказа Ubercart в Drupal 7. Спасибо

1

Решение

Просто зациклите все объекты. Я просто храню все как объекты (вместо приведения к массиву) для простоты, так как нет необходимости current():

foreach($order->products as $object) {
echo $object->model . ' ' . $object->qty . 'x';
}

Если вам когда-нибудь понадобится ключ, такой как 12271 затем:

foreach($order->products as $key => $object) {
echo $key;
echo $object->model . ' ' . $object->qty . 'x';
}

Может быть, более читабельным:

echo "{$object->model} {$object->qty}x";
0

Другие решения

Если порядок полей постоянен, вы можете использовать это

foreach ($order->products as $product) {
vprintf('%s %ux' . PHP_EOL, $product);
}

еще

foreach ($order->products as $p) {
printf('%s %ux%s', $p->model, $p->qty, PHP_EOL);
}
0

По вопросам рекламы [email protected]