| 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: 16 let
|
|||
0