# \[PHP\]  Array sortieren

**URL:** https://forum.shopware.com/t/php-array-sortieren/6587
**Category:** Shopware 3.5
**Tags:** programming
**Created:** [22. März 2012 um 10:16 UTC](https://forum.shopware.com/t/php-array-sortieren/6587 "2012-03-22T10:16:34Z")
**Posts on this page:** 5
**Page:** 1

<div class="post-metadata">

### Author: ![ottscho](https://avatars.discourse-cdn.com/v4/letter/o/7ba0ec/32.png) [@ottscho](https://forum.shopware.com/u/ottscho)
#### Post date: [22. März 2012 um 10:16 UTC](https://forum.shopware.com/t/php-array-sortieren/6587/1 "2012-03-22T10:16:34Z")

</div>

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

---

<div class="post-metadata">

### Author: ![waldicom](https://dub1.discourse-cdn.com/flex013/user_avatar/forum.shopware.com/waldicom/32/12881_2.png) [@waldicom](https://forum.shopware.com/u/waldicom)
#### Post date: [22. März 2012 um 10:30 UTC](https://forum.shopware.com/t/php-array-sortieren/6587/2 "2012-03-22T10:30:24Z")

</div>

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']; }`

---

<div class="post-metadata">

### Author: ![ottscho](https://avatars.discourse-cdn.com/v4/letter/o/7ba0ec/32.png) [@ottscho](https://forum.shopware.com/u/ottscho)
#### Post date: [22. März 2012 um 11:23 UTC](https://forum.shopware.com/t/php-array-sortieren/6587/3 "2012-03-22T11:23:40Z")

</div>

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‘];

---

<div class="post-metadata">

### Author: ![waldicom](https://dub1.discourse-cdn.com/flex013/user_avatar/forum.shopware.com/waldicom/32/12881_2.png) [@waldicom](https://forum.shopware.com/u/waldicom)
#### Post date: [22. März 2012 um 11:35 UTC](https://forum.shopware.com/t/php-array-sortieren/6587/4 "2012-03-22T11:35:04Z")

</div>

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.

---

<div class="post-metadata">

### Author: ![ottscho](https://avatars.discourse-cdn.com/v4/letter/o/7ba0ec/32.png) [@ottscho](https://forum.shopware.com/u/ottscho)
#### Post date: [22. März 2012 um 11:40 UTC](https://forum.shopware.com/t/php-array-sortieren/6587/5 "2012-03-22T11:40:40Z")

</div>

mist, klar… ich depp. jetzt klappt es. Vielen Dank 🙂
