首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PHP用通配符从数组中打印多个值

问PHP用通配符从数组中打印多个值
EN

Stack Overflow用户
提问于 2017-02-28 16:42:47
回答 2查看 1.6K关注 0票数 1

我试图通过PHP从包含通配符的数组中打印多个值。我已经从这里的另一个问题中找到了通配符元素,但是我现在很难从多个实体中打印出多个值。我正在工作(12271 stdClass对象是通配符,第一个stdClass对象是$order):

代码语言:javascript
复制
stdClass Object
(
  [products]
    (
      [12271] => stdClass Object
        (
          [model] => MODEL1
          [qty] => 1
        )

因此,下面的代码正常工作,并正确地打印出'MODEL1 1x‘

代码语言:javascript
复制
<?php
$model = current((array)$order->products)->model;
$qty = current((array)$order->products)->qty;
print $model.' '.$qty.'x';
?>

但是,如果存在多个对象,如

代码语言:javascript
复制
stdClass Object
(
  [products]
    (
      [12271] => stdClass Object
        (
          [model] => MODEL1
          [qty] => 1
        )
      [45897] => stdClass Object
        (
          [model] => MODEL2
          [qty] => 2

我不知道如何打印多个对象,以便打印出:

'MODEL1 1x‘和'MODEL2 2x’

任何帮助都将不胜感激。作为参考,我正在尝试从Drupal 7中的Ubercart订单中打印值。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-02-28 16:47:35

只要循环所有的对象。为了简单起见,我只是把所有东西都保存为对象(而不是转换为数组),因为不需要current()。

代码语言:javascript
复制
foreach($order->products as $object) {
    echo $object->model . ' ' . $object->qty . 'x';
}

如果您需要12271这样的密钥,那么:

代码语言:javascript
复制
foreach($order->products as $key => $object) {
    echo $key;
    echo $object->model . ' ' . $object->qty . 'x';
}

也许更易读:

代码语言:javascript
复制
echo "{$object->model} {$object->qty}x";
票数 0
EN

Stack Overflow用户

发布于 2017-02-28 17:11:27

如果字段的顺序是永久性的,则可以使用以下命令

代码语言:javascript
复制
foreach ($order->products as $product) {
    vprintf('%s %ux' . PHP_EOL, $product);
}

否则

代码语言:javascript
复制
foreach ($order->products as $p) {
    printf('%s %ux%s', $p->model, $p->qty, PHP_EOL);
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42514259

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档