DVD-Sucht.de: Max-Wert aus mehrdimensionalem Array

Kann mir jemand sagen, wie ich mit PHP den Max-Wert (einer 2. (!) Dimension) aus einem zweidimensionalen Array bekomme?

Beispiel:

$data["Nov 06"][1] = 66;
$data["Nov 06"][2] = 83;
$data["Nov 06"][3] = 75;
$data["Nov 06"][4] = 42;

$data["Dez 06"][1] = 27;
$data["Dez 06"][2] = 33;
$data["Dez 06"][3] = 17;
$data["Dez 06"][4] = 39;

// Zeigt korrekt 39 an
$max = max($data["Dez 06"]));

// Ich benötige aber aus der 2. Dimension den höchsten Wert
$max = max($data[?][4]));

Geht das irgendwie (ohne mit 2 verschachtelten foreach-Schleife alles zu durchlaufen)?

  1. Hello,

    Deine Aufgabenstellung ist leider noch verwirrend.
    Gib doch einfach mal ein Beispiel dafür, was herauskommen soll...

    PHP verwaltet "Arrays" als Baumstrukturen. Echte "Ebenen" oder "Dimensionen" gibt es daher nicht.

    Harzliche Grüße vom Berg
    http://www.annerschbarrich.de

    Tom

    --
    Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
    Nur selber lernen macht schlau

  2. HI,

    Wenn du nicht das ganze array sortieren willt, sondern nur den höchsen Wert willst, und das Array nicht zu endlos lange ist, solltest du am besten mit einer 'foreach' - Schleife dir den höchsten Wert heraussuchen, indem du die Werte der Reihe nach mit einer variablen vergleichst, die immer den bisher höchsten Wert speichert.

    Timon @ http://www.wahnsinn.de.tl

    --
    Käsebrötchen
  3. echo $begrüßung;

    Kann mir jemand sagen, wie ich mit PHP den Max-Wert (einer 2. (!) Dimension) aus einem zweidimensionalen Array bekomme?

    Versuche bei PHP-Arrays nicht in Dimensionen zu denken. Ein PHP-Array ist eine Liste mit Werten, die ihrerseits einfach (=skalar; string, integer) oder komplex (array, object) sein können. Es ergibt sich damit eine mehr oder weniger unregelmäßige Baumstruktur.

    Geht das irgendwie (ohne mit 2 verschachtelten foreach-Schleife alles zu durchlaufen)?

    Ja, du kannst die Aufgabe des Iterierens an die PHP-Funktion array_reduce() abtreten. Dazu benötigst du aber eine Hilfsfunktion, die aus dem bereits ermittelten Maximalwert und den einzelnen Elementen von $data, die ja ihrerseits wieder Arrays darstellen, den Maximalwert ermittelt.

    function rmax($v, $w) {
      $w[] = $v;
      return max($w);
    }
    echo array_reduce($data, 'rmax', 0);

    $v ist der derzeitige Maximalwert, am Anfang mit 0 belegt. $w ist ein Element aus $data. Da max() entweder Einzelwerte oder ein Array mit Werten haben möchte, und $w bereit ein Array ist, fügen wir einfach als weiteres Element von $w den bisherigen Max-Wert an und ermitteln daraus den neuen Maximalwert.

    echo "$verabschiedung $name";