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