Array sortieren

Schumiel

Lieutenant
Dabei seit
Jan. 2010
Beiträge
670
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"
  }
 

Rage

Commander
Dabei seit
Feb. 2009
Beiträge
2.430
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.
 

Ebrithil

Lt. Junior Grade
Dabei seit
Dez. 2014
Beiträge
488
@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.
 

Yuuri

Fleet Admiral
Dabei seit
Okt. 2010
Beiträge
12.681
Code:
usort( $array, function( array $a, array $b )
{
    return $a["time"] <=> $b["time"];
} );
 

Schumiel

Lieutenant
Ersteller dieses Themas
Dabei seit
Jan. 2010
Beiträge
670
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:

abcddcba

Lt. Commander
Dabei seit
Juni 2018
Beiträge
1.936
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;
} );
 
Top