Tableau imbriqué... sortir une variable ?

Rechercher

Tableau imbriqué... sortir une variable ?

Par bejadan  -  2 reponses  -  Le 27/03/2014 13:42  -  Editer  - 

Hello à tous !
je me debrouille avec php en autodidacte, et la je bute sur un probleme a priori simple mais qui dépasse mes maigres compétences...
Avec opencart je recupere une variable produit
en faisant un print_r($produit); j'ai ca:

Array (
    [product_id]        => 51
    [thumb]             =>
    [name]              => Gypsy Jazz
    [description]       => A Gypsy Jazz style song ! ..
    [price]             => 19.00€
    [special]           =>
    [tax]               =>
    [rating]            => 0
    [reviews]           => Based on 0 reviews.
    [href]              => http://dor-balkans.com/opencart/index.php?route=product/product&path=64&product_id=51
    [attribute_groups]  => Array (
        [0] => Array (
            [attribute_group_id]    => 8
            [name]                  => Instruments
            [attribute]             => Array (
                [0] => Array (
                    [attribute_id]      => 12
                    [name]              => Acoustic Guitar
                    [text]              => Music with acoustic guitar
                )
                [1] => Array (
                    [attribute_id]      => 13
                    [name]              => DoubleBass
                    [text]              => Music with doublebass
                )
            )
        )
        [1] => Array (
            [attribute_group_id]    => 7
            [name]                  => Mood
            [attribute]             => Array (
                [0] => Array (
                    [attribute_id]      => 14
                    [name]              => Happy
                    [text]              => Happyyy
                )
            )
        )
        [2] => Array (
            [attribute_group_id]    => 9
            [name]                  => prev
            [attribute]             => Array (
                [0] => Array (
                    [attribute_id]      => 15
                    [name]              => mp3
                    [text]              => acousticheaven15s-prev.mp3
                )
            )
        )
    )
)

et je voudrais récupérer le dernier attribut donc acousticheaven15s-prev.mp3
c'est à dire :
dans produit il y a un tableau attribute_groups
dans attribute_groups j'ai un tableau et dans chaque case j'ai un tableau
il me faudrait celui ou name='prev' et recuperer le 'text' de celui la

comment cibler directement cette case ?
je suis obliger de parser avec un for each ? je peux pas faire un truc du genre:

$mp3= $product[attribute_groupe[ 2['prev']['text'] ]

ou un truc du genre ???

oulala je m'embrouille un peu la...

si quelqu'un peu m'aider merci beaucoup !!! :)

 

Réponses apportées à cette discussion

Par Cyrano  -  Le 27/03/2014 15:41  -  Haut de page  - 

Salut,
en fait il te faut effectuer deux boucles foreach imbriquées.

Voici la manière de faire, attention aux commentaires du code, ils sont aussi importants que le code lui-même :

/* On initialise une variable à NULL */
$mp3 = null;
/* Dans la première boucle, on va parcourir les groupes d'attributs pour y trouver « prev » */
foreach($produit['attribute_groups'] as $attrgrp)
{
    if($attrgrp['name'] == 'prev')
    {
        /* On a trouvé « prev », donc on va parcourir les attributs de ce groupe pour chercher « mp3 » */
        foreach($attrgrp['attribute'] as $attr)
        {
            if($attr['name'] == 'mp3')
            {
                /* On a trouvé « mp3 », on peut dès lors récupérer le nom du fichier */
                $mp3 = $attr['text'];
                /* On a trouvé le fichier, on peut quitter les deux boucles */
                break(2);
            }
        }
    }
}
/**
 * Si à ce point du code $mp3 vaut toujours NULL, c'est 
 * qu'on a pas trouvé les éléments recherchés
 */

N'hésite pas à revenir poser des questions si un élément où un autre n'est pas clair.

 
Par bejadan  -  Le 27/03/2014 15:44  -  Haut de page  - 

Hello !! Merci beaucoup pour ta réponse.. c'est un peu ce que j'imaginais et que je voulais éviter de faire..
Vu que tout mes produits ont obligatoirement cette variable à la meme position, j'ai testé un peu et j'ai finalement reussi en ciblant directement :

$url=$product[attribute_groups][2]['attribute'][0]['text'];

je ne connaissais pas cette syntaxe exacte pour cibler les tableaux (oui je sais je suis un peu nul)

Si ca peut servir a d'autres... Merci en tout cas !

 

Ajouter une réponse à la discussion

Seuls les membres connectés sont autorisés à poster dans les forums !

Identifiez-vous
Join |  ID/MDP? |