Re: [LA-technique] PHP ; Remplissage d'array avec foreach

[ Thread Index | Date Index | More linuxarverne.org/technique Archives ]


re,
problème au niveau de ton test...
en rouge, à commenter, en vert, à ajouter, je pense que ça devrait mieux fonctionner,

Fred.

Le 06/01/2015 14:19, Daniel Cartron a écrit :
Le lundi 5 janvier 2015, 13:33:12 Fred a écrit :
D'après la structure de ton XML, tu pourrais boucler sur chaque élément 
de ton tableau pour faire en sorte que dès qu'une propriété est de type 
SimpleXMLElement,
tu affectes à cette propriété le contenu de la propriété "li" pour avoir 
ceci au final :
Salut,

J'ai pas mal cogité sur tes indications, j'ai notamment résolu le pb des 
catégories en les rangeant d'office dans un sous tableau, mm s'il n'y en a 
qu'une, et ça ça marche.

Par contre j'ai encore des pbs à convertir les SimpleXMLElement en cellules du 
tableau.

Mon nouveau code (probablement très bourrin mais pour l'instant il fait une 
grosse partie du boulot) est ci-dessous. Si tu pouvais me dire ce qui cloche, 
probablement dans $recipeelements = (array) $mycookbook[$recipecounter]
[$recipekey]->li; (vers la fin)...

  foreach($mycookfile->recipe as $bookvalue) {
        $recipe = (array) $bookvalue; // recette actuelle  
        foreach($recipe as $recipekey => $recipevalue) {
		if($recipevalue != "") {
			if($recipekey == 'category') {
				if(is_array($recipevalue)) {
					foreach($recipevalue as $recipeelement){
						$mycookbook[$recipecounter][$recipekey][] = $recipeelement;
						if(!in_array($recipeelement, $categories)) {  
							array_push($categories, $recipeelement);
						}  
					}
				}
				else {
					$mycookbook[$recipecounter][$recipekey][] = $recipevalue;
						if(!in_array($recipevalue, $categories)) {  
							array_push($categories, $recipevalue);
						}  
				}
			}
			else {
				/*
				if(is_array($recipevalue)) {
					$recipeelements = (array) $mycookbook[$recipecounter][$recipekey]->li;
					foreach($recipeelements as $recipeelement){
						$mycookbook[$recipecounter][$recipekey][] = $recipeelement;
					}
				}
				*/
				if(    is_object($recipevalue)
 				    && get_class($recipevalue) == 'SimpleXMLElement'
   				    && isset($recipevalue->li)) {

					$mycookbook[$recipecounter][$recipekey] = (array) $recipevalue->li;

				}
				else {
					 $mycookbook[$recipecounter][$recipekey] = $recipevalue;
				}
			 }
		}
        }
        ++$recipecounter;
  }





Mail converted by MHonArc 2.6.19+ http://listengine.tuxfamily.org/