Я пытаюсь распечатать несколько значений через 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. Спасибо
Просто зациклите все объекты. Я просто храню все как объекты (вместо приведения к массиву) для простоты, так как нет необходимости 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";
Если порядок полей постоянен, вы можете использовать это
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);
}