Sortierung eines mehrdimensionalen Array's

Hallo an alle,

ich habe da ein „ArrayProblem“. Gegeben ist ein Array wie folgt:

Array
(
    [0] => Array
        (
            [0] => 52
            [1] => 1264258076
            [2] => 14.5
        )

    [1] => Array
        (
            [0] => 55
            [1] => 1254258140
            [2] => 14.6
        )

    [2] => Array
        (
            [0] => 284204
            [1] => 1258188516
            [2] => 9.9

        )
  )
	

Ich brauche den kleinsten Wert der in $array[?][1] steht. In diesem Fall den rot markierten.
Möglicherweise kann mir jemand weiterhelfen.

Gruß
Attain

Ähmm … NUR den kleinsten Wert oder auch noch etwas von dem Rest?

Wenn es NUR um den kleinsten Wert geht, was spricht dagegen alle [1]er Werte mit einer foreach Schleife in ein neues Array zu packen, welches du dann mit ASC sortierst und dann array[0] ausgibst !?

edit
Hier mal mit deinen Werten verdeutlicht:


$row1 = array(52,1264258076,14.5);
$row2 = array(55,1254258140,14.6);
$row3 = array(284204,1258188516,9.9);

$gesamt = array($row1, $row2, $row3);

foreach ($gesamt as $key => $wert) {
    $Test[$key]  = $wert[1];}

array_multisort($Test, SORT_ASC, $gesamt);

echo $Test[0];

Ergibt:

1254258140

Gruß
Jens

Hab eine andere Version deines Beispiels


$row1 = array(52,1264258076,14.5);
$row2 = array(55,1254258140,14.6);
$row3 = array(284204,1258188516,9.9);

$gesamt = array($row1, $row2, $row3);

$min = min($gesamt[0][1],$gesamt[1][1],$gesamt[2][1]);

echo $min;

Ergibt bei mir 1254258140
Wenn er nur den Wert haben will und nicht wo der her ist
geht das.

Hallo Jens,

so ähnlich habe ich es auch:


$minimum = 9999999999;
foreach ($array as $key => $value) {
    if ($minimum > $value[1])  $minimum = $value[1];
}

Ich dachte nur ich kann mir die Schleife sparen, da im Manual zu array_multisort() steht:

Sortiert mehrere oder multidimensionale Arrays

Ich komme aber mit dem Syntax nicht so recht klar.

Gruß
Attain

Also die Lösung von 1007 ist einfacher, bezieht sich aber tatsächlich nur auf auf den Wert …

Falls man die einzelnen Arrays in dem großen Array neu sortieren will, weil man auch die restlichen beiden Werte benötigt und das Sortierkriterium dein Wert ist, dann ist array_multisort() die Lösung.

Array_multisort() bietet allerdings mehrere Möglichkeiten der Benutzung und von daher ist das mit der Syntax auch nicht gerde einfach (zumindest für mich als Laie).

Gruß
Jens

Ich sortiere sowas immer mit http://php.net/manual/de/function.usort.php, da man dort bequem eine eigene Vergleichsfunktion übergeben kann:

<?php
$data = array(
    array(52, 1264258076, 14.5),
    array(55, 1254258140, 14.6),
    array(284204, 1258188516, 9.9)
);

function sortData ($a, $b)
{
    return $a[1] - $b[1];
}

usort($data, 'sortData');

echo $data[0][1];
?>