Portál AbcLinuxu, 12. května 2025 07:52
$times = array( '2007-12-10 21:22:56', '2007-12-10 21:24:57', '2007-12-10 21:22:58', '2007-12-10 21:24:59' ); $res = array_filter($times, create_function('$a', 'return strcmp($a, "2007-12-10 21:23:34") >p; 0;')); print_r($res);Nevyzkouseno
To je ISO formát času (ISO 8601), a jeho vlastnosťou už z návrhu je, že lexikografické poradie je zhodné s chronologickým. Takže je možné časové údaje úspešne porovnávať aj ako stringy. A ak je prvý string "menší" ako druhý, tak to znamená, že prvý nastal (alebo nastane) skôr než druhý.
K odpovedi na pôvodnú otázku: netreba Ti žiadne regulárne výrazy. Ak to máš v poli, tak stačí cez foreach prechádzať a porovnávať všetky záznamy (zložitosť O(n)). Ak je to pole zoradené, tak potom stačí len nájsť hranicu polením intervalu a použiť správnu polovicu poľa (zložitosť O(log n)). A ak údaj pochádza z databázy, tak je najlepšie nechať databázu vybrať len vyhovujúce riadky, a v PHP to vôbec netriediť.
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.