2017-02-28 24 views
1

ワイルドカードを含む配列から複数の値をPHPで出力しようとしています。私はここで別の質問からワイルドカード要素を解決することができましたが、私は今、複数のエンティティから複数の値を印刷するのに苦労しています。私は(12271はstdClassオブジェクトは、ワイルドカードと最初はstdClassオブジェクトである$オーダーである)から働いています:PHPワイルドカードを使用した配列から複数の値を出力する

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 

として、私はそれをプリントアウトしているように、複数のオブジェクトを印刷する方法がわからない:

'MODEL1 1x'と 'MODEL2 2x'

ご協力いただければ幸いです。参考までに、私はDrupal 7でUbercart注文の値を印刷しようとしています。ありがとう

答えて

0

すべてのオブジェクトをループするだけです。 current()のための必要はありませんので、私は簡単にするために(代わりに配列にキャストの)オブジェクトとしてすべてを保つ:

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

多分より:

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

は、あなたがこれまでのような12271し、キーを必要とする場合読み:

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

絶対スター、ありがとうございました!私はforeachをどこかで、何らかの形で使う必要があることを知っていました。ありがとう、完璧! – stuhannaford

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); 
} 
関連する問題