Sortieren von Unterarray
Hey,
ich komme nicht ganz klar und weiß nicht wie ich mein Array nach Name sortieren kann. Bein beispiel ist jetzt leider schon korrekt sortiert, aber das Array besteht aus viel mehr Datensätzen. Das ist nur ein kleiner Auszug.
Im Prinzip sollen alle Unterarrys nach ["name"] sortiert werden. So wie hier Bridgestone, Goodyear etc.
Habt ihr mir einen Tipp? mit asort und ksort kann ich ja kein Feld mit geben.
Besten Dank im Voraus
ich komme nicht ganz klar und weiß nicht wie ich mein Array nach Name sortieren kann. Bein beispiel ist jetzt leider schon korrekt sortiert, aber das Array besteht aus viel mehr Datensätzen. Das ist nur ein kleiner Auszug.
Im Prinzip sollen alle Unterarrys nach ["name"] sortiert werden. So wie hier Bridgestone, Goodyear etc.
Habt ihr mir einen Tipp? mit asort und ksort kann ich ja kein Feld mit geben.
array(71) {
[26]=>
array(5) {
["id"]=>
string(2) "26"
["name"]=>
string(11) "BRIDGESTONE"
["img"]=>
string(36) "d01381cfdbedf6b2fa3a8ca44c093327.png"
["link"]=>
string(0) ""
["count"]=>
string(2) "41"
}
[9]=>
array(5) {
["id"]=>
string(1) "9"
["name"]=>
string(8) "GOODYEAR"
["img"]=>
string(36) "05acbc947e294fda0a05680a826be36f.png"
["link"]=>
string(0) ""
["count"]=>
string(2) "28"
}
[2]=>
array(5) {
["id"]=>
string(1) "2"
["name"]=>
string(7) "PIRELLI"
["img"]=>
string(36) "7c9d8090adb1e1192f3864b694058911.png"
["link"]=>
string(0) ""
["count"]=>
string(2) "27"
}
}
Besten Dank im Voraus
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 182388
Url: https://administrator.de/contentid/182388
Ausgedruckt am: 22.11.2024 um 10:11 Uhr
8 Kommentare
Neuester Kommentar
Tag,
das solltest du mit usort recht einfach hinbekommen: http://www.php.net/manual/de/function.usort.php
Baust dir einfach eine Vergleichsfunktion wie im Beispiel von php.net, vergleichst aber nicht $a und $b direkt, sondern $a['name'] und $b['name'].
das solltest du mit usort recht einfach hinbekommen: http://www.php.net/manual/de/function.usort.php
Baust dir einfach eine Vergleichsfunktion wie im Beispiel von php.net, vergleichst aber nicht $a und $b direkt, sondern $a['name'] und $b['name'].
Hi ottscho,
du kannst die Funktion uasort mit einer Vergleichsfunktion verwenden.
Die Vergleichsfunktion wird dann zusammen mit dem Array an uasort übergeben,
die Vergleichsfunktion allerdings in Anführungszeichen ohne Klammern!!.
Gruß
Günni
PS.: Für den Fall, dass nach Zahlen sortiert werden soll, kannst du nicht strcmp verwenden.
Dazu müsste die Vergleichsfunktion anders geschrieben werden:
Aber strcmp ist halt kürzer ;-p
du kannst die Funktion uasort mit einer Vergleichsfunktion verwenden.
<?php
/*
* Vergleichsfunktion
*/
function so($a, $b){
/*
* @index: Enthält irgendeinen Schlüssel des/der Arrays, z.B.:
*/
$index='name';
return (strcmp ($a[$index],$b[$index]));
}
?>
Die Vergleichsfunktion wird dann zusammen mit dem Array an uasort übergeben,
die Vergleichsfunktion allerdings in Anführungszeichen ohne Klammern!!.
<?php
/*
* Sortieren
*/
uasort($arr, 'so');
?>
Gruß
Günni
PS.: Für den Fall, dass nach Zahlen sortiert werden soll, kannst du nicht strcmp verwenden.
Dazu müsste die Vergleichsfunktion anders geschrieben werden:
<?php
function so($a, $b) {
$index=Array-Key;
if ($a[$index] == $b[$index]) {
return 0;
}
return ($a[$index] < $b[$index]) ? -1 : 1;
}
?>
Aber strcmp ist halt kürzer ;-p
Hi ottscho,
das muß irgendeine andere Ursache haben. Ich poste dir mal das komplette Script
und die Ausgabe vor und nach der Sortierung. Dann siehst du, dass mein Testarray
genau wie deins aufgebaut ist und die Sortierung nach 'name' durchgeführt wird.
Und hier die Ausgaben von var_dump:
Gruß
Günni
das muß irgendeine andere Ursache haben. Ich poste dir mal das komplette Script
und die Ausgabe vor und nach der Sortierung. Dann siehst du, dass mein Testarray
genau wie deins aufgebaut ist und die Sortierung nach 'name' durchgeführt wird.
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Untitled</title>
</head>
<body>
<?
/*
* Vergleichsfunktion
*/
function so($a, $b){
/*
* @index: Enthält irgendeinen Schlüssel des/der Arrays, z.B.:
*/
$index='name';
return (strcmp ($a[$index],$b[$index]));
}
/*
* Ein Array
*/
$arr = array ( array('id' => '26','name' => 'Anna', 'datum' => '01.01.1963','sex' => 'weiblich'),
array('id' => '23','name' => 'Xaver', 'datum' => '03.05.1964','sex' => 'männlich'),
array('id' => '22','name' => 'Jonas', 'datum' => '01.01.1961','sex' => 'männlich'),
array('id' => '21','name' => 'Sabine', 'datum' => '13.09.1968','sex' => 'weiblich'));
/*
* Ausgabe des Arrays
*/
echo "Ausgabe:<pre>";
var_dump($arr);
echo "</pre>";
/*
Sortieren
*/
uasort($arr,'so');
/*
* Ausgabe des sortierten Arrays
*/
echo "Ausgabe nach uasort:<pre>";
var_dump($arr);
echo "</pre>";
?>
</body>
</html>
Und hier die Ausgaben von var_dump:
Ausgabe:
array(4) {
=>
array(4) {
["id"]=>
string(2) "26"
["name"]=>
string(4) "Anna"
["datum"]=>
string(10) "01.01.1963"
["sex"]=>
string(8) "weiblich"
}
[1]=>
array(4) {
["id"]=>
string(2) "23"
["name"]=>
string(5) "Xaver"
["datum"]=>
string(10) "03.05.1964"
["sex"]=>
string(8) "männlich"
}
[2]=>
array(4) {
["id"]=>
string(2) "22"
["name"]=>
string(5) "Jonas"
["datum"]=>
string(10) "01.01.1961"
["sex"]=>
string(8) "männlich"
}
[3]=>
array(4) {
["id"]=>
string(2) "21"
["name"]=>
string(6) "Sabine"
["datum"]=>
string(10) "13.09.1968"
["sex"]=>
string(8) "weiblich"
}
}
Ausgabe nach uasort:
array(4) {
=>
array(4) {
["id"]=>
string(2) "26"
["name"]=>
string(4) "Anna"
["datum"]=>
string(10) "01.01.1963"
["sex"]=>
string(8) "weiblich"
}
[2]=>
array(4) {
["id"]=>
string(2) "22"
["name"]=>
string(5) "Jonas"
["datum"]=>
string(10) "01.01.1961"
["sex"]=>
string(8) "männlich"
}
[3]=>
array(4) {
["id"]=>
string(2) "21"
["name"]=>
string(6) "Sabine"
["datum"]=>
string(10) "13.09.1968"
["sex"]=>
string(8) "weiblich"
}
[1]=>
array(4) {
["id"]=>
string(2) "23"
["name"]=>
string(5) "Xaver"
["datum"]=>
string(10) "03.05.1964"
["sex"]=>
string(8) "männlich"
}
}
Gruß
Günni