Array sortieren

Schumiel

Lieutenant
Registriert
Jan. 2010
Beiträge
825
Hallo,

ich möchte das Array nach "time" aufsteigend sortieren lassen. Mit sort gelingt mir das nicht.
Jemand eine Idee?

PHP:
array(2) {
  [1]=>
  array(2) {
    ["time"]=>
    int(1494182396)
    ["id"]=>
    string(5) "1"
  }
  [2]=>
  array(2) {
    ["time"]=>
    int(1494182067)
    ["id"]=>
    string(4) "2"
  }
 
Hey @Schumiel, wenn Du hier gute Hilfe haben willst, dann wäre schön zu wissen, welche Programmiersprache das hier ist, und wie genau Du sortieren willst. Ich nehme einfach mal an, das hier ist nur die Initialisierung Deines Dummy-Arrays, weiß es aber nicht genau, weil ich die Sprache nicht erkenne.

Entschuldigung, ich habe nicht gesehen, dass man bei "Code" die Programmiersprache mit in die Umgebung schreiben kann. Mein Fehler.
 
@Rage Die Sprache steht im Header des Code-Blocks

@Schumiel
Ich kenne mich mit PHP nicht aus, aber mit http://php.net/manual/de/function.uasort.php sollte das eigentlich funktionieren. Da kannst du eine eigene Sortierfunktion mit übergeben, damit kannst du dann die time Felder der einzelnen Elemente miteinander vergleichen.
 
Code:
usort( $array, function( array $a, array $b )
{
    return $a["time"] <=> $b["time"];
} );
 
Yuuri, klappt leider nicht. Bekomme Fehler beim <=>.
Finde auch grade keine passende Sortierungfunktion von PHP. :-(
Ergänzung ()

$test ist mein array.

PHP:
uasort($test,"my_sort");

function my_sort($a,$b)
{
if ($a==$b) return 0;
    return ($a<$b)?-1:1;
}

Hier sortiert sich aber nichts.
Ergänzung ()

Auch damit nicht.

PHP:
usort($test, "my_sort");

function my_sort($a, $b)
{
    return strcmp($a["time"], $b["time"]);
}
Ergänzung ()

Letztes tut es doch.
 
Zuletzt bearbeitet:
PHP:
uasort($test,"my_sort");

function my_sort($a,$b)
{
if ($a==$b) return 0;
    return ($a<$b)?-1:1;
}

Logisch dass das nicht geht, du hast ein verschachteltes Array, das musst du schon noch beruecksichtigen bei der Implementierung...

Probier das

PHP:
usort( $array, function( array $a, array $b )
{
if ($a["time"]==$b["time"]) return 0;
    return ($a["time"]<$b["time"])?-1:1;
} );
 
Zurück
Oben