1

SunShopと協力して、クライアント用のカスタム レポート スクリプトを構築しようとしています。foreach() ステートメントを実行して、この配列から選択した情報を引き出す方法を理解するのに苦労しています。たとえば、各オプションの名前と値を引き出したいと思います。

ゴール:

echo $data['options']['name']
echo $data['options']['value']

foreach() を実装してループして結果を表示するいくつかの方法を試しましたが、正しくシリアル化解除していないか、未定義のオブジェクトがあることを伝えるたびに失敗します。あなたの誰かがこれに光を当てることができますか?私は確かに配列について十分に知りません。

また、言及する価値があると思いますが、私はセッションを扱っていません。要求されたときにレポートを取得するために時々実行するためだけに、SunShop の外でこれを構築しています。

配列を取得する方法:

<?php 
$array=unserialize(base64_decode($data));
var_dump($array);
?>

配列ダンプ:

object(__PHP_Incomplete_Class)[1]
  public '__PHP_Incomplete_Class_Name' => string 'item' (length=4)
  public 'id' => int 655
  public 'quantity' => float 3
  public 'options' => 
    array
      0 => 
        object(__PHP_Incomplete_Class)[2]
          public '__PHP_Incomplete_Class_Name' => string 'option' (length=6)
          public 'id' => string '487' (length=3)
          public 'product' => string '655' (length=3)
          public 'name' => string 'Choose Brand' (length=12)
          public 'value' => string 'Brand Name' (length=10)
          public 'valueid' => string '2026' (length=4)
          public 'weight' => string '0' (length=1)
          public 'price' => string '0' (length=1)
          public 'desc' => string '' (length=0)
          public 'sku' => string '' (length=0)
      1 => 
        object(__PHP_Incomplete_Class)[3]
          public '__PHP_Incomplete_Class_Name' => string 'option' (length=6)
          public 'id' => string '488' (length=3)
          public 'product' => string '655' (length=3)
          public 'name' => string 'Choose Size & Color' (length=19)
          public 'value' => string 'Chocolate - Medium' (length=18)
          public 'valueid' => string '2022' (length=4)
          public 'weight' => string '0' (length=1)
          public 'price' => string '0' (length=1)
          public 'desc' => string '' (length=0)
          public 'sku' => string '' (length=0)
  public 'regid' => string '' (length=0)
4

1 に答える 1

2

オブジェクトと配列の違いを学ぶ必要があるだけです。$arrayあなたの var_dump によると、配列ではなくオブジェクトです。$optionsオブジェクトの配列です。

$data = array();
foreach($array->options as $option) {
    $data[] = array(
        'name' => $option->name,
        'value' => $option->value,
    );
    //of if needed instead of storing these values in $data array you 
    //can just echo these values.
    //echo $option->name;
    //echo $option->value;
}
于 2013-06-27T14:10:08.057 に答える