Autor | Zpráva | ||
---|---|---|---|
drozdo Profil |
#1 · Zasláno: 15. 1. 2010, 18:10:40
Zdravim potrboval by som utriedit nejak jednoducho taketo pole:
array = { 0 -> "28.02.2010;Stane sa nieco;obrazok.jpg", 1 -> "07.01.2010;Stalo sa nieco;bla.jpg", 2 -> "14.07.2010;safsbldsf;ha.jpg } a potreboval by som to utriedit podla datumu (tej prvej zlozky v kazdom riadku). teda napriklad pole2 by vyzeralo: array = { 0 -> "07.01.2010;Stalo sa nieco;bla.jpg", 1 -> "28.02.2010;Stane sa nieco;obrazok.jpg", 2 -> "14.07.2010;safsbldsf;ha.jpg } Velmi dakujem |
||
Nox Profil |
#2 · Zasláno: 15. 1. 2010, 18:19:38
V tomhle případě podle mě pouze http://www.php.net/manual/en/function.usort.php
|
||
fajzen Profil |
#3 · Zasláno: 15. 1. 2010, 20:13:04 · Upravil/a: fajzen
drozdo:
myslím, že keďže je dátum prvý a je vo formáte dd.mm.yyyy, na spojení kľúč->hodnota v poli pravdepodobne nezáleží, tak by mohlo stačiť aj obyčajné sort() sorry, nie, keby bol formát dátumu yyyy.mm.dd tak by to šlo, takto treba naozaj usort |
||
drozdo Profil |
#4 · Zasláno: 15. 1. 2010, 23:07:52
nejak to nemozem dostat do tej mojej pozidavaky asi budem musiet vytvorit vlastne funkcie...
|
||
AM_ Profil |
#5 · Zasláno: 16. 1. 2010, 11:25:13
jo, řešení je usort - třídění dle vlastní funkce. Napíšeš si funkci, která porovná dva řetězce podle datumu, a následně jí jako parametr callback předáš funkci usort.
|
||
imploder Profil |
#6 · Zasláno: 16. 1. 2010, 11:35:31
usort() je nestabilní (tj. u stejných prvků se nemusí zachovat jejich původní pořadí). Pokud je stabilita nutná, dá se použít třeba mergesort tady v komentářích usortu.
|
||
drozdo Profil |
#7 · Zasláno: 16. 1. 2010, 14:36:39
spravil som to takto nejak, hadam je to najlepsie riesenie, ak nie pls kritiku...
function cmp($a, $b) { return strcmp(strtotime($a[0]), strtotime($b[0])); } $file = 'akce.txt'; $fj = fopen($file, 'r'); if($fj) { $counter = fread($fj, filesize($file)); $riadok = explode("\n", $counter); fclose($fj); $pocetriadkov = count($riadok); for ($i = 0; $i < $pocetriadkov; $i++) { $pole[$i] = explode(";",$riadok[$i]); $rozdel = explode(".",$pole[$i][0]); //pre php4 (strtotime) $pole[$i][0]= $rozdel[2]."/".$rozdel[1]."/".$rozdel[0]; // date (Y/m/d) } usort($pole, "cmp"); while (list($key, $value) = each($pole)) { echo "\datum[$key]: " . $value[0] . "\n"; } } else { $error = 5; } |
||
Časová prodleva: 14 let
|
0