Je passe un très mauvais moment en ce moment, car tout le monde sur Internet dit que PHP prend en charge les tableaux multidimensionnels qui ont deux, trois, quatre, cinq niveaux ou plus. Cependant, les tableaux de plus de trois niveaux de profondeur sont difficiles à gérer pour la plupart des gens. Donc je ne trouve personne pour m'aider.

Un exemple très simple ci-dessous

  $documents = array(
    array(
         "name"=>"Markos",
        "lastname"=>"papadopoulos",
        "country"=>"Greece",
        "nationality"=>"greek",
        "job"=>"web developer",
        "hobbies"=>array(
                "sports"=>"boxing",
                "others"=>array(
                        "freetime"=>"watching Tv"
                )
        )

    )
);

foreach($documents as $document){
    echo $document['name']."<br>"
        .$document['lastname']."<br>"
        .$document['country']."<br>"
        .$document['nationality']."<br>"
        .$document['job']."<br>";

            foreach ($document['hobbies'] as $key=>$value){
                echo $key." ".$value."<br>";

                    foreach ($value['others'] as $subkey=>$subvalue){
                        echo $subkey['freetime'];
                    }

                }
}

Je suis bloqué, je ne peux pas afficher le "others"=>array("freetime"=>"watching tv") quelqu'un peut-il me conseiller? Et si j'avais aussi un autre tableau dans le "others"=>array("freetime"=>"watching tv"), comment pourrais-je afficher ce tableau? J'essaye d'apprendre la logique.

3
ThunderBoy 2 juin 2020 à 20:54

3 réponses

Meilleure réponse

En PHP, foreach a en fait deux syntaxes:

  1. foreach($array as $element) cela pourrait signifier que $element finit par être un tableau
  2. foreach($array as $key => $value) cela signifie que key ne sera jamais un tableau, c'est ce que la clé, donc ce que vous avez avant le => dans votre tableau, alors que $value peut être un tableau .

Voici comment suivre la première syntaxe, sachez que vous n'avez même pas besoin d'imbriquer foreach ici, comme indiqué par @ Commentaire de Nathanael ce que vous avez dans votre tableau est principalement scalaire, pas vraiment des tableaux imbriqués .

foreach($documents as $document){
  echo $document['name']."<br>".
    $document['lastname']."<br>".
    $document['country']."<br>".
    $document['nationality']."<br>".
    $document['job']."<br>".
    $document['job']."<br>".
    $document['hobbies']['sports']."<br>".
    $document['hobbies']['others']['freetime'];
}

Si vous voulez utiliser la deuxième syntaxe, alors il serait encore mieux de faire une récursivité:

function display_multi_level_array($array) {
  foreach($array as $key => $value){
    if(is_array($value)) {
       display_multi_level_array($value);
       continue;
    }

    echo $key." ".$value."<br>";
  } 
}

display_multi_level_array($documents);
2
β.εηοιτ.βε 2 juin 2020 à 18:42
foreach ($documents as $key) {
echo $key['name']. '<br>';
echo $key['lastname']. '<br>';
echo $key['country']. '<br>';
echo $key['nationality']. '<br>';
echo $key['job']. '<br>';
echo $key['hobbies']['sports']. '<br>';
echo $key['hobbies']['others']['freetime']. '<br>';
}

La sortie sera Markos papadopoulos Grèce développeur web grec boxe regarder la télévision

3
CodeBug 2 juin 2020 à 18:14

Essayer

foreach($documents as $document){
echo $document['name']."<br>"
    .$document['lastname']."<br>"
    .$document['country']."<br>"
    .$document['nationality']."<br>"
    .$document['job']."<br>";

        foreach ($document['hobbies'] as $key=>$value){
            if (is_array($value)) {
                foreach ($value as $subkey=>$subvalue){
                    echo $subvalue;
                }
            } else {
                echo $key." ".$value."<br>";
            }
        }
}
2
Nathanael 2 juin 2020 à 18:04