| 

.NET C# Java Javascript Exception

2
Hey

Sicherlich leicht, aber irgendwie finde ich nichts im Internet, was verständlich ist.

$item[0][name] = "Anton";
$item[0][strasse] = "Berg";
$item[0][datum] = "14.03.2020";
/* ... hier folgen dann noch 40 weitere Eigenschaften… */

$item[1][name] = "Peter";
$item[1][strasse] = "Huegel";
$item[1][datum] = "14.03.1986";

$item[2][name] = "Konrad";
$item[2][strasse] = "Eben";
$item[2][datum] = "14.03.2000";


Nun möchte ich alles nach dem Datum neu sortieren. Und am liebsten mit einer zweiten Bedingung, erst nach Datum und danach nach Name.
Also $item[0] ist dann "Peter", $item[1] = Konrad, $item[2] = Anton.

Ich könnte [timestamp] = "xxxx" auch sicher noch ergänzen, damit die Sortierung einfacher wird und nicht über das "Deutsche" Datum gehen muss.

Gruss
04.12.2012
meone 99 1 6
1 Antwort
4
Dein Freund ist die Funktion usort => http://php.net/manual/de/function.usort.php

Das "u" steht für user defined. Du musst eine eigene Funktion erstellen, die den Vergleich durchführt und -1, 0 oder 1 zurückliefert. Hier das PHP Beispiel:
<?php
function cmp($a, $b)
{
return strcmp($a["frucht"], $b["frucht"]);
}

$fruechte[0]["frucht"] = "Zitronen";
$fruechte[1]["frucht"] = "Aepfel";
$fruechte[2]["frucht"] = "Orangen";

usort($fruechte, "cmp");

while (list($key, $value) = each($fruits)) {
echo "\$fruechte[$key]: " . $value["frucht"] . "\n";
}
?>


bzw. hier siehst Du besser, wann Du was zurückliefern musst.
function cmp($a, $b)
{
if ($a == $b) {
return 0;
}
return ($a < $b) ? -1 : 1;
}



ggf. passt auch uasort oder uksort besser: http://php.net/manual/de/array.sorting.php

<?php
function cmp($a, $b)
{
if ($a['timestamp'] == $b['timestamp']) {
return 0;
}
return ($a['timestamp'] < $b['timestamp']) ? -1 : 1;

}

usort($item, "cmp");

?>
04.12.2012
Xantiva 2,3k 2 9

Stelle deine Php-Frage jetzt!