2013-03-14 50 views
0

我嘗試了很多不同的方法。我設法讓第一部分工作,但第二部分得到的水果名稱不工作。迭代雖然一個對象和回聲值

我已存儲在$food一個對象,該對象的print_r()輸出如下所示:

Food Object 
(
    [id] => 1 
    [values] => Array 
     (
      [name] => Myfood 
     ) 
    [objects] => Array 
     (
      [0] => Fruits Object 
       (
        [id] => 1 
        [values] => Array 
         (
          [name] => My Fruits 
         ) 
        [objects] => Array 
         (
          [0] => FruitType Object 
           (
            [id] => 1 
            [values] => Array 
             (
              [name] => Orange1 
             ) 
           ) 
         ) 
       ) 
     ) 
) 

此代碼顯示 'Myfood' 成功:

foreach ($food->values as $key => $value) { 
    echo "$key => $value"; 
} 

此代碼顯示「我的水果'成功:

echo '<br/>'; 

foreach ($food->objects as $id => $owner) { 
    foreach ($owner->values as $key => $value) { 
     echo "$key => $value"; 
    } 
} 

我需要一秒鐘顯示FruitType對象值Orange1的代碼塊,我嘗試了一些東西,但沒有很好地工作。謝謝

+0

如果你只是爲了調試而做這個,看看var_dump()。 – ScoPi 2013-03-14 14:36:04

+0

@ScoPi'var_dump()== print_r()'我認爲這是一個學習練習是安全的。 – Emissary 2013-03-14 14:38:55

回答

1

它看起來好像你碰到的最大的絆腳石所有開發商面臨...事物命名。我可能沒有做得太好,因爲我不能100%確定你的最終目標是什麼,但是就嵌套循環而言你是在正確的軌道上。

foreach ($food->objects as $i => $obj) { 
    echo "name => {$obj->values['name']}\n"; 
    foreach ($obj->objects as $j => $type) { 
     foreach($type->values as $key => $val){ 
      echo " $key => $val\n"; 
     } 
    } 
} 

Working Example

看你的對象的結構雖然 - 遞歸迭代可能更容易閱讀。

0

爲什麼你不使用get_object_vars()函數?

多看這裏:http://php.net/manual/fr/function.get-object-vars.php

+0

var_dump是產生上面的對象塊的東西。我確定有另一個循環可以添加來從他的代碼中提取'fruitstype'。我只是無法弄清楚它 - - [code] foreach($食物 - >對象爲$ id => $所有者){foreach($ owner-> values as $ key => $ value){ echo「$ key => $ value「; } } [/ code] – andre3wap 2013-03-14 15:08:48