web-dev-qa-db-fra.com

Écho un tableau multidimensionnel dans PHP

J'ai un tableau multidimensionnel et j'essaie de savoir comment "écho" simplement les éléments du tableau. La profondeur de la matrice n'est pas connue, elle pourrait donc être profondément imbriquée.

Dans le cas du tableau ci-dessous, l'ordre correct d'écho serait le suivant:

This is a parent comment
This is a child comment
This is the 2nd child comment
This is another parent comment

Voici le tableau dont je parlais:

Array
(
    [0] => Array
        (
            [comment_id] => 1
            [comment_content] => This is a parent comment
            [child] => Array
                (
                    [0] => Array
                        (
                            [comment_id] => 3
                            [comment_content] => This is a child comment
                            [child] => Array
                                (
                                    [0] => Array
                                        (
                                            [comment_id] => 4
                                            [comment_content] => This is the 2nd child comment
                                            [child] => Array
                                                (
                                                )
                                        )
                                )
                        )
                )
        )

    [1] => Array
        (
            [comment_id] => 2
            [comment_content] => This is another parent comment
            [child] => Array
                (
                )
        )
)
12
Jennifer

On dirait que vous essayez seulement d'écrire une valeur importante de chaque tableau. Essayez une fonction récursive comme ceci:

function RecursiveWrite($array) {
    foreach ($array as $vals) {
        echo $vals['comment_content'] . "\n";
        RecursiveWrite($vals['child']);
    }
}

Vous pouvez également le rendre un peu plus dynamique et faire passer les chaînes 'comment_content' et 'child' dans la fonction en tant que paramètres (et continuer à les transmettre dans l'appel récursif).

14
keithjgrant
<pre>
<?php print_r ($array); ?>
</pre>
29
Hilydrow

Solution appropriée, meilleure et propre:

function traverseArray($array)
{
    // Loops through each element. If element again is array, function is recalled. If not, result is echoed.
    foreach ($array as $key => $value)
    {
        if (is_array($value))
        {
            Self::traverseArray($value); // Or
            // traverseArray($value);
        }
        else
        {
            echo $key . " = " . $value . "<br />\n";
        }
    }
}

Vous appelez simplement dans cette fonction d'assistance traverseArray($array) dans votre classe actuelle/principale comme ceci:

$this->traverseArray($dataArray); // Or
// traverseArray($dataArray);

source: http://snipplr.com/view/10200/array-traverse-a-multidimensional-array/

5
Dung

si vous voulez le stocker en tant que variable, vous pouvez le faire:

recurse_array($values){
    $content = '';
    if( is_array($values) ){
        foreach($values as $key => $value){
            if( is_array($value) ){
                $content.="$key<br />".recurse_array($value);
            }else{
                $content.="$key = $value<br />";
            }

        }
    }
    return $content;
}

$array_text = recurse_array($array);

Évidemment, vous pouvez formater au besoin!

2
Matt Lowden

print_r($arr) donne généralement un résultat assez lisible.

2
Osw

La récursivité serait généralement votre réponse, mais une autre solution consisterait à utiliser des références. Voir http://www.ideashower.com/our_solutions/create-a-parent-child-array-structure-in-one-pass/

0
jhogendorn

Si vous exportez les données à des fins de débogage et de développement, Krumo est idéal pour produire une sortie facilement lisible. Découvrez le exemple de sortie .

0
Matt V.

Il y a plusieurs façons de le faire

1) - print_r($array); ou si vous voulez un tableau bien formaté, alors 

echo '<pre>'; print_r($array); echo '<pre/>';

// ---------------------------------------------------- -

2) - utilisez var_dump($array) pour obtenir plus d’informations sur le contenu du tableau, comme type de données et longueur . // ---------------------- ---------------------------

3) - vous pouvez boucler le tableau en utilisant foreach(); de php et obtenir la sortie désirée. 

function recursiveFunction($array) {
    foreach ($array as $val) {
            echo $val['comment_content'] . "\n";
            recursiveFunction($vals['child']);
    }
}
0
Muhammad Tahir

Essayez d'utiliser var_dump function.

0
ikostia