• Aktualisierte Forenregeln

    Eine kleine Änderung hat es im Bereich Forenregeln unter Abschnitt 2 gegeben, wo wir nun explizit darauf verweisen, dass Forenkommentare in unserer Heftrubrik Leserbriefe landen können.

    Forenregeln


    Vielen Dank

PHP - 2 Dimensionales Array Sortieren

J

Jonny83

Gast
Hab unter PHP folgendes Problem, wo ich nicht weiß, wie ich es möglichst einfach lösen kann.

Ich hab ein zwei Dimensionales Array nach solch einen ähnlichen Schema:

$test[0] = array{name,size, ...};
$test[1] = array{name,size, ...};
......

Wie kann ich dieses Zwei-Dimensionale Array jetzt z.B. nach name oder size sortieren??
 
<?php
/* todor at todor dot net
08-Mar-2004 01:39
To sort multidimentional arrays .... by one key.
php.net/usort */

function multi_sort($tab,$key){
$compare = create_function('$a,$b','if ($a["'.$key.'"] == $b["'.$key.'"]) {return 0;}else {return ($a["'.$key.'"] > $b["'.$key.'"]) ? -1 : 1;}');
usort($tab,$compare) ;
return $tab ;
}

$arr = array(array("name"=>"bla1","size"=>99),array("name"=>"bla2","size"=>1));
print_r($arr);
print_r(multi_sort($arr,"name"));
print_r(multi_sort($arr,"size"));
?>

muesste so gehen :)
 
marky68 am 17.11.2005 16:28 schrieb:
<?php
/* todor at todor dot net
08-Mar-2004 01:39
To sort multidimentional arrays .... by one key.
php.net/usort */

function multi_sort($tab,$key){
$compare = create_function('$a,$b','if ($a["'.$key.'"] == $b["'.$key.'"]) {return 0;}else {return ($a["'.$key.'"] > $b["'.$key.'"]) ? -1 : 1;}');
usort($tab,$compare) ;
return $tab ;
}

$arr = array(array("name"=>"bla1","size"=>99),array("name"=>"bla2","size"=>1));
print_r($arr);
print_r(multi_sort($arr,"name"));
print_r(multi_sort($arr,"size"));
?>

muesste so gehen :)

Danke für deine Antwort - werd's mal ausprobieren!
 
Du verfährst mit mehrdimensionalen Arrays genau wie mit eindimensionalen.

asort($arr) für alphabetische Anordnung der Variablen in der ersten Dimension.

asort($arr[0]) für alphabetische Anordnung der Variablen in der zweiten Dimension.

Die Indizes werden bei asort aber beibehalten.

Hier steht alles Wissenswerte dazu: http://de3.php.net/manual/de/ref.array.php
 
Marscel am 17.11.2005 20:47 schrieb:
Du verfährst mit mehrdimensionalen Arrays genau wie mit eindimensionalen.

asort($arr) für alphabetische Anordnung der Variablen in der ersten Dimension.

asort($arr[0]) für alphabetische Anordnung der Variablen in der zweiten Dimension.

Die Indizes werden bei asort aber beibehalten.

Hier steht alles Wissenswerte dazu: http://de3.php.net/manual/de/ref.array.php

Wenn ich aber ein asort($arr[0]) mach, dann sortiert er mir die elemente des arrays, dass in element 0 von $arr liegt.

Ich hab aber ein zwei Dimensionales Array - im Prinzip eine Tabelle. Die erste Dimension sind die einzelnen Zeilen, die zweite Dimension sind die Spalten. Ich will jetzt z.B. die Zeilen nach einer bestimmten Spalte sortieren. (Schau dir nochmal meinen ersten Post an)

Was marky68 geschrieben hat, kommt schon sehr gut an das ran, was ich brauche.
 
Zurück