Schleifen Sie ein mehrdimensionales Array und drucken Sie nur zwei bestimmte Spaltenwerte pro Zeile

Lesezeit: 3 Minuten

Benutzeravatar von esafwan
esafwan

Wie kann ich die Dateipfad- und Dateinamenwerte aus jeder Zeile drucken?

  Array (
    [0] => Array (
             [fid] => 14
             [list] => 1
             [data] => Array (
                         [alt] =>
                         Loop a multidimensional array and only print two specific column values per row =>
                       )
             [uid] => 1
             [filename] => trucks_10785.jpg
             [filepath] => sites/default/files/trucks_10785.jpg
             [filemime] => image/jpeg
             [filesize] => 143648
             [status] => 1
             [timestamp] => 1291424171
             [nid] => 8
           )
    [1] => Array (
             [fid] => 19
             [list] => 1
             [data] => Array (
                         [alt] =>
                         Loop a multidimensional array and only print two specific column values per row =>
                       )
             [uid] => 1
             [filename] => school.jpg
             [filepath] => sites/default/files/school.jpg
             [filemime] => image/jpeg
             [filesize] => 115355
             [status] => 1
             [timestamp] => 1292029563
             [nid] => 8
           )
    [2] => Array (
             [fid] => 20
             [list] => 1
             [data] => Array (
                         [alt] =>
                         Loop a multidimensional array and only print two specific column values per row =>
                       )
             [uid] => 1
             [filename] => Life_is_wonderful_by_iNeedChemicalX.jpg
             [filepath] => sites/default/files/Life_is_wonderful_by_iNeedChemicalX_0.jpg
             [filemime] => image/jpeg
             [filesize] => 82580
             [status] => 1
             [timestamp] => 1292029572
             [nid] => 8
           )
    [3] => Array (
             [fid] => 21
             [list] => 1
             [data] => Array (
                         [alt] =>
                         Loop a multidimensional array and only print two specific column values per row =>
                       )
             [uid] => 1
             [filename] => school_rural.jpg
             [filepath] => sites/default/files/school_rural.jpg
             [filemime] => image/jpeg
             [filesize] => 375088
             [status] => 1
             [timestamp] => 1292029582
             [nid] => 8
           )
  )

Ishs Benutzeravatar
Isch

Verwendung einer foreach Schleife ohne Schlüssel:

foreach($array as $item) {
    echo $item['filename'];
    echo $item['filepath'];

    // To know what's in $item
    echo '<pre>'; var_dump($item);
}

Verwendung einer foreach Schleife mit einem Schlüssel:

foreach($array as $i => $item) {
    echo $array[$i]['filename'];
    echo $array[$i]['filepath'];

    // $array[$i] is same as $item
}

Verwendung einer for Schleife:

for ($i = 0; $i < count($array); $i++) {
    echo $array[$i]['filename'];
    echo $array[$i]['filepath'];
}

var_dump ist eine wirklich nützliche Funktion, um einen Snapshot eines Arrays oder Objekts zu erhalten.

  • Auch zur Kasse var_export, die gültigen PHP-Code ausgibt. Sie können das in einer Datei speichern und dann den Code schreiben, um ihn dort zu durchlaufen, bevor Sie ihn in Ihren Hauptcode einfügen.

    – Ben

    30. März 2017 um 15:39 Uhr

  • ist hier ein Problem mit der Verwendung der for-Schleife-Methode. Ich habe irgendwo gelesen, dass der Index möglicherweise nicht existiert?

    – Lichter aus

    8. September 2017 um 4:32 Uhr

  • Wenn der Index nicht wie definiert ist ['a', 'b', 'c']dann sind seine Werte 0,1 und 2.

    – Isch

    8. September 2017 um 17:57 Uhr

Benutzeravatar von obsergius
beobachter

Für speziellere Fälle können Sie auch dieses verwenden:

array_map(function($n) { echo $n['filename']; echo $n['filepath'];}, $array);

Oder etwas unkomplizierter:

function printItem($n){
    echo $n['filename'];
    echo $n['filepath'];
}

array_map('printItem', $array);

Dadurch können Sie die Daten einfacher bearbeiten.

Einfach anfangen, ohne HTML:

foreach($database as $file) {
    echo $file['filename'] . ' at ' . $file['filepath'];
}

Und Sie können die Felder im foreach anderweitig manipulieren.

Benutzeravatar von Kavinda Harshana
Kavinda Harshana

foreach($array as $item => $values) {
    echo $values->filepath;
}

In modernem PHP kann die Array-Destrukturierung verwendet werden, um nur auf bestimmte Zeilenspalten zuzugreifen. Zum Drucken können Zeichenfolgenverkettungen und Interpolationen vermieden werden, indem verwendet wird printf() anstatt echo.

foreach ($array as ['filename' => $fn, 'filepath' => $fp]) {
    printf("filename: %s, filepath: %s\n", $fn, $fp);
}

Es ist ein Missbrauch einer nativen Funktion zum Aufrufen array_map() und NICHT seinen Rückgabewert verwenden. Wenn eine funktionale Iteration gewünscht wird, iterieren Sie mit array_walk() da sein Rückgabewert nicht dafür ausgelegt ist, die iterierten Daten darzustellen.

array_walk($array, fn($row) => 
    printf("filename: %s, filepath: %s\n", $row['filename'], $row['filepath'])
);

Benutzeravatar von jakoubekcz
jakoubekcz

Sie können dies auch verwenden, ohne zusätzliche Variablen zu erstellen oder die Daten in den Speicher zu kopieren, wie es foreach() tut.

while (false !== (list($item, $values) = each($array)))
{
    ...
}

1441130cookie-checkSchleifen Sie ein mehrdimensionales Array und drucken Sie nur zwei bestimmte Spaltenwerte pro Zeile

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy