Diskuze: třídění podle timestampu
V předchozím kvízu, Online test znalostí PHP, jsme si ověřili nabyté zkušenosti z kurzu.
Tvůrce
Zobrazeno 8 zpráv z 8.
//= Settings::TRACKING_CODE_B ?> //= Settings::TRACKING_CODE ?>
V předchozím kvízu, Online test znalostí PHP, jsme si ověřili nabyté zkušenosti z kurzu.
Vyřešeno tímto způsobem
public static function sortByDate(array &$array, $ASC = null)
{
$output = [];
foreach($array as $element)
{
$timestamps[] = strtotime($element['time']);
}
sort($timestamps, SORT_NUMERIC);
foreach($timestamps as $timestamp){
foreach ($array as $element)
{
if (strtotime($element['time']) == $timestamp)
$output[] = $element;
}
}
if($ASC)
return $output;
else
return array_reverse($output);
}
Pokud znáte lepší, podělte se prosím
Lepšie by bolo použiť funkciu usort (kliknutím sa dostaneš na dokumentáciu).
V tvojom prípade by mohol skript vyzerať takto nejako:
<?php
function compareByTime(array $a, array $b) {
if ($a["time"] == $b["time"]) return 0;
return $a["time"] < $b["time"] ? -1 : 1;
}
usort($array, "cmp_by_optionNumber");
u verzie 5.3+ je možné použiť anonymnú funkciu
<?php
usort($array, function (array $a, array $b) {
if ($a["time"] == $b["time"]) return 0;
return $a["time"] < $b["time"] ? -1 : 1;
});
Prípadne tu je celkom dobré riešenie: http://stackoverflow.com/a/2477524
Kód som netestoval, ak by nefungoval správne skús opačné znamienko pri porovnávaní
Jo a z $a['time'] si urob porovnateľnú hodnotu, napr. timestamp číslo. Neviem či to PHP takto samo zvládne skonvertovať zo stringu, no ale to si vyskúšaš
U toho prvého príkladu v 3. komentári som urobil chybku
<?php
function compareByTime(array $a, array $b) {
if ($a["time"] == $b["time"]) return 0;
return $a["time"] < $b["time"] ? -1 : 1;
}
usort($array, "compareByTime"); // správny názov funkcie ktorú máme zavolať, preto sa mi skôr páči ten druhý príklad s anonymnou funkciou...
Skúsil si to teda či ani nie?
něco podobného jsem již zkoušel, bohužel neúspěšně, ale mrknu na to až budu mít víc času
Čau, tak čo, skúsil si ten môj spôsob? Príde mi to viac "pretty" než to tvoje
Zobrazeno 8 zpráv z 8.