Autor | Zpráva | ||
---|---|---|---|
4li Profil |
#1 · Zasláno: 8. 11. 2008, 21:46:31
Hi!
Existuje nejaka "sort" funkce, kde bych zadal presne pozadavky na usporadani pole? Priklad: Array ( [1] => book-me [2] => online [3] => online [4] => offline [5] => book-me ) Potrebuju: Array ( [2] => online [3] => online [1] => book-me [5] => book-me [4] => offline ) Pozadavky - online vzdy na zacatku - offline vzdy na konci - musi to usporadavat ve smyslu, ze nebude menit klice puvodnich hodnot, tj. napr. klic [2] bude met vzdy hodnotu "online" Dik moc! |
||
HGD Profil |
#2 · Zasláno: 8. 11. 2008, 22:00:42
usort() - řazení dle vlastní fce
|
||
4li Profil |
#3 · Zasláno: 9. 11. 2008, 01:34:10
HGD
ok.. dik za radu, ale nemam poneti o tom jak tu funkci sestavit.. muzes to prosim specifikovat? |
||
Mastodont Profil |
#4 · Zasláno: 9. 11. 2008, 08:53:00 · Upravil/a: Mastodont
usort těžko, když nemají být měněny klíče
This function assigns new keys to the elements in array . It will remove any existing keys that may have been assigned, rather than just reordering the keys. |
||
nightfish Profil |
#5 · Zasláno: 9. 11. 2008, 09:19:25
|
||
4li Profil |
#6 · Zasláno: 9. 11. 2008, 16:20:13
nightfish
diky.. vazne se nevyznam ve vytvareni funkci, mohl by jsi mi s tim pomoct? |
||
Časová prodleva: 1 měsíc
|
|||
peta Profil |
#7 · Zasláno: 15. 12. 2008, 14:11:15
:)))
4li proste si zkopiruj prvni priklad. Je to asi 10 radku a pak volani funkce (radek s ***) uasort($arr, 'so'); Pod tim uz je jen vystup. |
||
Časová prodleva: 5 dní
|
|||
4li Profil |
#8 · Zasláno: 20. 12. 2008, 20:33:09
peta
skusil som vsetko, ale vazne si neviem s tymto problemom rady.. mam problemi s funkciami vseobecne, preto by som ocenil, ak by mi s tym niekto pomohol viacej, resp. napisal konkretne riesenie.. dik moc! |
||
Alphard Profil |
#9 · Zasláno: 20. 12. 2008, 21:57:13 · Upravil/a: Alphard
<?php $puv = array ( 1 => "book-me", "online", "online", "offline", "book-me"); $new = $puv; function radit ($a, $b) { if ($a == $b) return 0; $vzor = array ("online", "book-me", "offline"); return (array_search ($a, $vzor) < array_search ($b, $vzor)) ? -1 :1; } uasort ($new, "radit"); print_r ($puv); echo "<br>"; print_r ($new); ?> vysledek: Array ( [1] => book-me [2] => online [3] => online [4] => offline [5] => book-me ) Array ( [2] => online [3] => online [1] => book-me [5] => book-me [4] => offline ) |
||
4li Profil |
#10 · Zasláno: 21. 12. 2008, 01:44:34
Alphard
diiiiiiiiiiiiiiiiiiiiiiiiiiiiiik moc! fakci to.. mas to u mna :) |
||
Časová prodleva: 5 měsíců
|
|||
4li Profil |
#11 · Zasláno: 3. 6. 2009, 21:52:20
Alphard
Este raz ti dakujem za pomoc. Riesim toto iste pole este raz. Aby som sa vratil k povodnemu problemu: Priklad bol: Array ( [1] => book-me [2] => online [3] => online [4] => offline [5] => book-me ) Potreboval som to pole zoradit podla vzoru > "online", "book-me", "offline" a tak to funguje podla tvojho riesenia: Array ( [2] => online [3] => online [1] => book-me [5] => book-me [4] => offline ) Teraz potrebujem, aby takto zoradene pole dostalo novu podmienku a to aby sa vsetky "book-me" zoradili nahodne pri kazdom nacitani, tj.: 1. nacitanie: Array ( [2] => online [3] => online [1] => book-me [5] => book-me [4] => offline ) 2. nacitanie: Array ( [2] => online [3] => online [5] => book-me [1] => book-me [4] => offline ) atd. Je to vobec mozne? Dik moc! |
||
Časová prodleva: 5 dní
|
|||
4li Profil |
#12 · Zasláno: 8. 6. 2009, 16:07:20 · Upravil/a: 4li
Nenajde sa nikto, kto by mi v tomto poradil, prosim?
|
||
AM_ Profil |
#13 · Zasláno: 8. 6. 2009, 16:41:00
zkus Alphardovu funkci radit prepsat takto:
function radit ($a, $b) { if ($a == $b) return rand(0, 1)*2-1; //vrati nahodne 1 nebo -1 $vzor = array ("online", "book-me", "offline"); return (array_search ($a, $vzor) < array_search ($b, $vzor)) ? -1 :1; } nevím, jaký řadící algoritmus PHP používá, je možné i to, že s použitím této funkce nemusí být konečný. Ale zkusit to můžeš ;) |
||
nightfish Profil |
#14 · Zasláno: 8. 6. 2009, 17:08:22
imho tohle už pomocí usortu() vyřešit nepůjde, důvod popsal AM_ - porovnání dvou prvků není deterministické, a navíc obecně může pokaždé dopadnout jinak...
já bych to zřejmě řešil dvourozměrným polem ve stylu $pole = array("online" => array(2, 3), "book-me" => array(1, 5), "offline" => array(4)); s tím, že na book-me bych pak zavolal shuffle |
||
4li Profil |
#15 · Zasláno: 10. 6. 2009, 18:23:05
AM_
Dik. Funguje to presne ako ma! :) nightfish Tvoja metoda sa mi pozdava viac, ale ak to fakci, tak to zatial nebudem menit. Dik za pomoc! |
||
Časová prodleva: 15 let
|
0