Autor | Zpráva | ||
---|---|---|---|
4li Profil |
#1 · Zasláno: 24. 1. 2011, 22:06:49
Zdravim.
Existuje pole: array(1 => online, 2 => offline, 3 => busy, 4 => offline, 5=> online); Potrebujem toto pole zoradit nasledovne (pri zachovani klucov): array(1 => online, 5=> online, 3 => busy, 2 => offline, 4 => offline); tj. (online, busy, offline) Dik za kazdu radu. :) |
||
Radek Cvek Profil |
#2 · Zasláno: 24. 1. 2011, 23:03:23
Takto?
<?php $array = array(1 => online, 2 => offline, 3 => busy, 4 => offline, 5=> online); print_r($array); echo'<br />'; while ($hodnota = current($array)) { if ($hodnota == 'online') $online[key($array)] = $hodnota; if ($hodnota == 'busy') $busy[key($array)] = $hodnota; if ($hodnota == 'offline') $offline[key($array)] = $hodnota; next($array); } $array = $online + $busy + $offline; print_r($array); ?> |
||
4li Profil |
#3 · Zasláno: 25. 1. 2011, 11:53:03
Vyhlasuje error. Nedalo by sa to riesit cez niektoru funkciu "sort"?
|
||
Kcko Profil |
#4 · Zasláno: 25. 1. 2011, 11:54:23
4li:
Než tu hodinu bádat, přemýšlet a čekat, nebude lepší si to pole seřadit ručně? Radek Cvek: Víte, že existuje foreach |
||
4li Profil |
#5 · Zasláno: 25. 1. 2011, 11:58:21
Kcko:
To pole je dynamicke, takze to potrebujem zoradovat automaticky. |
||
Radek Cvek Profil |
#6 · Zasláno: 25. 1. 2011, 12:16:38
4li:
Sortů je celá řada - škoda, že řada online, busy, offline není seřazena ani podle abecedy ani podle velikosti ani naopak. Sort, který by se na to hodil neznám. Vyhlasuje error - co přesně? |
||
Kcko Profil |
#7 · Zasláno: 25. 1. 2011, 12:18:57
4li:
Napsat si vlastní sort nebo si to pole přeskládat lépe. http://www.php-questions.com/phpfaq/answer116 |
||
4li Profil |
Tato funkcia funguje tak ako potrebujem, ale zaroven aj usporiadava hodnoty v nahodnom poradi, co nechcem. Da sa to zmenit?
function line_up($a, $b) { if($a == $b) return rand(0, 1)*2-1; $example = array("free", "showtime", "online", "busy", "book-me", "offline"); return(array_search($a, $example) < array_search ($b, $example)) ? -1 :1; } uasort($models_statuses, "line_up"); Najde sa niekto, kto by prerobil hore uvedeny kod? Dik moc! :) Moderátor panther: Sloučeny dva příspěvky do jednoho.
|
||
Mike8748 Profil |
#9 · Zasláno: 26. 1. 2011, 11:29:16 · Upravil/a: Mike8748
4li:
tak edit: function line_up($a, $b) { $example = array("free", "showtime", "online", "busy", "book-me", "offline"); if(array_search($a,$example) == array_search($b,$example)) return 0; return(array_search($a, $example) < array_search ($b, $example)) ? -1 :1; } |
||
4li Profil |
#10 · Zasláno: 26. 1. 2011, 11:48:51
Mike8748:
Funguje, dik moc! :) |
||
Časová prodleva: 13 let
|
0