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

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


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;
					}
				}
				else {
					$mycookbook[$recipecounter][$recipekey] = $recipevalue;
				}
			}
		}
        }
        ++$recipecounter;
  }


-- 
Cordialement, Daniel Cartron
« La plus grave maladie du cerveau c'est de réfléchir. »
Devise Shadock


--
Liste de discussions techniques de LinuxArverne
http://wiki.linuxarverne.org/listes_de_diffusion


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