Vraag Echo een multidimensionale array in PHP


Ik heb een multidimensionale array en ik probeer erachter te komen hoe ik eenvoudig de elementen van de array "echo". De diepte van de array is niet bekend, dus deze kan diep worden genest.

In het geval van de onderstaande array zou de juiste volgorde van echo zijn:

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

Dit is de array waar ik het over had:

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
2018-01-18 00:16


oorsprong


antwoorden:


Het lijkt erop dat u alleen probeert een belangrijke waarde uit elke array te schrijven. Probeer een recursieve functie zoals zo:

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

Je zou het ook een beetje dynamischer kunnen maken en de 'comment_content' en 'child' reeksen die als parameters in de functie zijn ingevoerd (en deze blijven doorgeven in de recursieve aanroep).


14
2018-01-18 00:18



<pre>
<?php print_r ($array); ?>
</pre>

28
2018-01-18 00:20



Goede, betere en schone oplossing:

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

U belt gewoon deze hulpfunctie in traverseArray($array) in je huidige / hoofdklasse als volgt:

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

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


5
2018-02-23 19:48



print_r($arr) geeft meestal redelijk leesbaar resultaat.


2
2018-01-18 00:20



als je het als een variabele wilt opslaan, kun je het volgende doen:

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

Uiteraard kun je naar behoefte opmaken!


2
2018-01-18 00:30



Probeer te gebruiken var_dump functie.


0
2018-01-18 00:21



Als u de gegevens uitvoert voor foutopsporing en ontwikkelingsdoeleinden, Krumo is geweldig voor het produceren van gemakkelijk leesbare uitvoer. Bekijk de voorbeelduitvoer.


0
2018-01-18 00:46