2009-10-15 8 views
2

J'ai un objet PHP qui contient d'autres objetsboucle à travers un objet qui contient un objet php

i.e.

$obj->sec_obj->some_var; 

Je veux utiliser une boucle foreach en boucle à travers l'objet et tous les objets objets. Je pense que le niveau maximum est 3, donc

$obj->sec_obj->third_obj->fourth_obj 

Toutes les idées?

Répondre

9

C'est juste une récursion de base.

function loop($obj) 
{ 
    if (is_object($obj)) { 
     foreach ($obj as $x) { 
      loop($x); 
     } 
    } else { 
     // do something 
    } 
} 

Modifier: Impression des paires de clés et de valeur:

function loop($obj, $key = null) 
{ 
    if (is_object($obj)) { 
     foreach ($obj as $x => $value) { 
      loop($value, $x); 
     } 
    } else { 
     echo "Key: $key, value: $obj"; 
    } 
} 
0

Consultez cette page: http://www.php.net/manual/en/language.oop5.iterations.php

Vous pouvez utiliser foreach pour boucler si les membres du public d'un objet, vous pourrait le faire avec une fonction récursive.

Si vous voulez être un peu plus chic, vous pouvez utiliser un Iterator.

0

Utilisez une fonction récursive. Une fonction qui s'appelle self si la valeur transmise est un objet et non la valeur que vous recherchez. Attention à ne pas entrer dans une boucle infinie bien!

Voici un bon article.

http://devzone.zend.com/article/1235

Questions connexes