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