Moin Moin, ich möchte ein Array sortieren, aber finde den Fehler nicht. Ich denke es hat mit dem Key zu tun. Folgendes Script welches funktioniert: 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");
Das sortiert mir nun die “frucht” nach ABC. Nun habe ich ein Array, welches zufällige Key hat. $supplier = $view-\>sSearchResults['sSuppliers'];
Mein Sortierfeld, nach welchem ich sortieren will erreiche ich über $supplier = $view-\>sSearchResults['sSuppliers']; $keys = array\_keys($supplier); var\_dump($supplier[$keys[0]]['name']);
Wenn ich nun versuche meine Array nach ‘name’ zu sortieren, ist dass Array danach NULL. function cmp($a, $b) { return strcmp($a["name"], $b["name"]); } usort($supplier, "cmp");
Ich denke da passt die Zuordnung nicht ganz. Leider komme ich nicht drauf. Hat mir jmd einen Tipp? Danke
Wenn du das im Plugin machst, sollst du noch den Namen der Klasse übergeben. Ich habe das vor zwei Tagen gemacht, so funktioniert es auf jeden Fall: ... usort($banners, array('Shopware\_Plugins\_Frontend\_WkBannerSortorder\_Bootstrap', 'sortBanners')); ... static function sortBanners($a, $b) { return $a['sortorder'] \> $b['sortorder']; }
danke für den Tipp. Aber so ganz klar komme ich noch nicht: static function mysearchFuzzyAction(Enlight\_Hook\_HookArgs $args) { $view = $args-\>getSubject()-\>View(); $supplier = $view-\>sSearchResults['sSuppliers']; $supplier = uasort($supplier, array('Shopware\_Plugins\_Frontend\_OttschoSortSupplierPlugin\_Bootstrap' ,'so')); var\_dump($supplier); } /\* \* Vergleichsfunktion \*/ function so($a, $b){ return (strcmp ($a['name'],$b['name'])); }
Ausgabe: bool(true) Habe die Funktion auch so wie du versucht: return $a[‚name‘] > $b[‚name‘];
ja, aber die Funktion kriegt das Array als Referenz. Also einfach so schreiben: uasort($supplier, array('Shopware\_Plugins\_Frontend\_OttschoSortSupplierPlugin\_Bootstrap' ,'so'));
Nach diesem Aufruf ist das Array schon sortiert. In deinem Code wird das Array überschrieben, weil die Funktion gibt TRUE oder FALSE zurück gibt.
mist, klar… ich depp. jetzt klappt es. Vielen Dank