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

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



Le 05/01/2015 11:48, Daniel Cartron a écrit :
Le lundi 5 janvier 2015, 11:20:22 Fred a écrit :
Attention cependant, les indices/ingredient, recipetext, nutrition,
comments//  /restent de type SimpleXMLElement, il faudrait reboucler
récursivement sur chaque indice de chaque élément recipe/...
Et concrètement ça fait quoi ? Du moment que je peux accéder au contenu ça me 
convient. Mais est-ce possible ?
oui c'est possible mais moins pratique qu'un élément de tableau non ?
 [0] => Array
        (
            [title] => tarte à la rhubarbe
            [preptime] => 10
            [cooktime] => 15
            [ingredient] => SimpleXMLElement Object
                (
                    [li] => Array
                        (
                            [0] => beurre
                            [1] => farine
                            [2] => bière
                        )

                )

            [recipetext] => SimpleXMLElement Object
                (
                    [li] => Array
                        (
                            [0] => text1
                            [1] => text2
                            [2] => text3
                        )

                )

            [url] => http://www.tarte.fr
            [imagepath] => img/tarte.jpg
Ici, pour accéder au premier ingrédient il faut écrire :

    $ingredients = (array) $mycookbook[0]['ingredient']->li;
    $ingredient1 = $ingredients[0];
    //print_r($ingredient1);

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 :

[0] => Array
        (
            [title] => tarte à la rhubarbe
            [preptime] => 10
            [cooktime] => 15
            [ingredient] => Array
                        (
                            [0] => beurre
                            [1] => farine
                            [2] => bière

            [recipetext] => Array
                        (
                            [0] => text1
                            [1] => text2
                            [2] => text3
                        )

            [url] => http://www.tarte.fr
            [imagepath] => img/tarte.jpg

tu n'aurais plus qu'à écrire :

    $ingredient1 = $mycookbook[0]['ingredient'][0];
    //print_r($ingredient1);

... plus sympa non ?



Sinon tout est parfait, à part que j'avais omis de préciser (m'en rappelais 
pu) que category peut avoir plusieurs occurences : Entrée et Poisson par 
exemple... Et du coup ça me crée un sous array

Alors pour faire simple (c'est pas trop élégant mais c'est le plus simple), tu ajoutes à ton tableau $categories toutes les catégories de la recette en cours (via un foreach),
puis tu termines par :

    $categories = array_unique($categories);

(http://php.net/array_unique)




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