Autor | Zpráva | ||
---|---|---|---|
fjf Profil |
#1 · Zasláno: 24. 6. 2011, 13:02:09
Ahojte
existuje nejaký jednoduchý spôsob ako zotriediť viacrozmerné pole podľa jednej jeho položky? príklad: majme pole $timy s hodnotami: $timy[0]["tim"] = aaa $timy[0]["pocet"] = 100 $timy[1]["tim"] = bbb $timy[1]["pocet"] = 300 $timy[2]["tim"] = ccc $timy[2]["pocet"] = 200 a chcem to zoradiť podľa položky "pocet"... |
||
__construct Profil |
#2 · Zasláno: 24. 6. 2011, 13:28:44
|
||
fjf Profil |
#3 · Zasláno: 24. 6. 2011, 13:51:22
__construct:
kukol som, ale nenašiel som nič "jednoduché" ;-) P.S.: A náhodou som dosť veľký amatér... |
||
1Pupik1989 Profil |
#4 · Zasláno: 24. 6. 2011, 16:29:21
Funkce usort je na to jak dělaná, sám jsem hledal způsob třídění vícerozměrných polí dlouho a jediná tahle funkce mi padla do oka.
|
||
fjf Profil |
#5 · Zasláno: 24. 6. 2011, 22:56:20
až nato, že usort asi nepochopím :-)
to vôbec nevyzerá jednoducho a mám v tom zmätok nechce sa niekomu to prepísať na môj príklad? P.S.: Nateraz som to vyriešil dvoma samostatnými poľami $tim a $pocet a nasledne cez funkciu arsort zotriedujem pole $pocet a zistujem nasledne indexy, ktorymi sa dostavam aj k polozkam pola $tim. Krkolomne, ale jednoduche a funkcne. A pre mna o hodne pochopitelnejsie. Nic to ale nemeni natom, ze rad by som chapal aj usort, len z manualu mi to pride dost nepochopitelne... |
||
ShiraNai7 Profil |
#6 · Zasláno: 24. 6. 2011, 23:17:24
fjf:
$timy = array(); $timy[0]["tim"] = 'aaa'; $timy[0]["pocet"] = 100; $timy[1]["tim"] = 'bbb'; $timy[1]["pocet"] = 300; $timy[2]["tim"] = 'ccc'; $timy[2]["pocet"] = 200 ; function seradit($a, $b) { if($a['pocet'] == $b['pocet']) return 0; if($a['pocet'] > $b['pocet']) return 1; return -1; } usort($timy, 'seradit'); print_r($timy); Výsledek je: Array ( [0] => Array ( [tim] => aaa [pocet] => 100 ) [1] => Array ( [tim] => ccc [pocet] => 200 ) [2] => Array ( [tim] => bbb [pocet] => 300 ) ) |
||
fjf Profil |
#7 · Zasláno: 26. 6. 2011, 12:40:44
Ok, dik.
Takze $a a $b v tej funkcii reprezentuju $timy[i] ? A keby som mal 3-rozmerne pole: $timy[i][j]["timy"] $timy[i][j]["pocet"] bola by funkcia seradit taka ista, len $a a $b by reprezentovalo $timy[i][j] ? A to iste aj pre pole: $timy[i]["timy"][j] $timy[i]["pocet"][j] ? Alebo tomu fakt nerozumiem? ;-) |
||
Časová prodleva: 13 let
|
0