2013-06-27 135 views
1

我正在與SunShop一起嘗試爲我的客戶端構建自定義報告腳本。 我很難理解如何運行foreach()語句來從此數組中提取任何所選信息。例如,我想抽出每個選項名稱&的值。php多維數組循環

目標:

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) 

回答

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; 
} 
+0

謝謝指出。我不知道。您是否推薦您的代碼按原樣工作,或者將對象轉換爲數組後?我嘗試了它,並沒有奏效。 – trainwreck

+0

我不能說我的代碼會按原樣工作,因爲我不知道你的最終結果應該是什麼樣子。我只是告訴你如何從對象/數組中獲取名稱和值。 – Pitchinnate