it-swarm.com.de

Echo eines mehrdimensionalen Arrays in PHP

Ich habe ein mehrdimensionales Array und ich versuche herauszufinden, wie man die Elemente des Arrays einfach "echo". Die Tiefe des Arrays ist nicht bekannt und könnte daher tief verschachtelt sein.

Im Falle des Arrays unten wäre die richtige Reihenfolge für das Echo:

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

Dies ist das Array, über das ich gesprochen habe:

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

Es scheint, dass Sie nur versuchen, aus jedem Array einen wichtigen Wert zu schreiben. Versuchen Sie eine rekursive Funktion wie folgt:

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

Sie könnten es auch etwas dynamischer gestalten und die Zeichenfolgen 'comment_content' und 'child' als Parameter an die Funktion übergeben (und sie beim rekursiven Aufruf weitergeben).

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

Richtige, bessere und saubere Lösung:

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

Sie rufen diese Hilfsfunktion traverseArray($array) in Ihrer aktuellen/Hauptklasse einfach wie folgt auf:

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

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

5
Dung

wenn Sie es als Variable speichern möchten, können Sie Folgendes tun:

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

Natürlich können Sie nach Bedarf formatieren!

2
Matt Lowden

print_r($arr) liefert normalerweise ein gut lesbares Ergebnis.

2
Osw

Rekursion wäre normalerweise Ihre Antwort, aber eine Alternative wäre die Verwendung von Referenzen. Siehe http://www.ideashower.com/our_solutions/create-a-parent-child-array-structure-in-one-pass/

0
jhogendorn

Wenn Sie die Daten für Debugging- und Entwicklungszwecke ausgeben, eignet sich Krumo für eine leicht lesbare Ausgabe. Überprüfen Sie die Beispielausgabe .

0
Matt V.

Es gibt mehrere Möglichkeiten dies zu tun

1) - print_r($array); oder wenn Sie dann ein schön formatiertes Array wünschen 

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

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

2) - Verwenden Sie var_dump($array), um weitere Informationen über den Inhalt des Arrays wie Datentyp und Länge zu erhalten. // ------------------ -------------------------------

3) - Sie können das Array mit der foreach(); von php schleifen und die gewünschte Ausgabe erhalten. 

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

Versuchen Sie, var_dump function zu verwenden.

0
ikostia