![]() |
[PHP] Mehrdimensionales Array sortieren
Hi zusammen :hi:
ich habe ein PHP-Array, das wie folgt aufgebaut ist:
Code:
Das würde ich nun gerne absteigend nach [hits]['abs'] sortieren, sodass es hinterher so aussieht:
Array
( [/category/id20/Sport.html] => Array ( [hits] => Array ( [abs] => 6 [rel] => 0.33 ) [traffic] => 95142 ) [/robots.txt] => Array ( [hits] => Array ( [abs] => 79 [rel] => 4.39 ) [traffic] => 17125 ) ... )
Code:
Ich bin auf "array_multisort()" gestoßen, doch wenn ich das richtig sehe, ist mein Vorhaben damit nicht möglich. Aber dass ich das manuell mit QuickSort und temporären Arrays sortieren muss, kann ich mir auch nicht ganz vorstellen. Das wäre ja immenser Aufwand.
Array
( [/robots.txt] => Array ( [hits] => Array ( [color=#ff0000][b][abs] => 79[/b][/color] [rel] => 4.39 ) [traffic] => 17125 ) [/category/id20/Sport.html] => Array ( [hits] => Array ( [color=#ff0000][b][abs] => 6[/b][/color] [rel] => 0.33 ) [traffic] => 95142 ) ... ) Geht das irgendwie einfacher? Grüße, Matze |
Re: [PHP] Mehrdimensionales Array sortieren
Code:
function cmp($a, $b)
{ if($a['hits']['abs'] == $b['hits']['abs']) return 0; return ($a['hits']['abs'] > $b['hits']['abs']) ? -1 : 1; } usort($dein_array, 'cmp'); ![]() ![]() |
Re: [PHP] Mehrdimensionales Array sortieren
Müsste nicht
![]() Eigentlich müsste das mit uasort() zu machen sein. In Deinem selbstgebastelten Callback-Handler greifst Du dann auf hits/abs zu und die Sachen müsste laufen. // Edit - Mist, zu langsam. ;-) |
Re: [PHP] Mehrdimensionales Array sortieren
geht sowas nicht?
Code:
also soooo aufwändig isses ja nicht :angel:
for ($i = 0; $i < count($myArray) - 1; $i++)
for ($j = $i + 1; $j < count($myArray); $j++) if ($myArray[$i]['hits']['abs'] < $myArray[$j]['hits']['abs']) { $temp = $myArray[$i]; $myArray[$i] = $myArray[$j]; $myArray[$j] = $temp; } [add] zu langsam (aber mit uasort sieht's auch netter aus :angel2: ) |
Re: [PHP] Mehrdimensionales Array sortieren
Hallo ihr beiden,
ihr seid spitze. Das funktioniert viel einfacher als ich gedacht habe. Vielen Dank. :thumb: Grüße, Matze PS: @himi: Da ist mir usort() lieber. ;) Edit: Bzw. uasort(), das Daniel angesprochen hat. Dann bleiben die Indizes erhalten. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:23 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz