Autor | Zpráva | ||
---|---|---|---|
capricorn Profil |
#1 · Zasláno: 18. 9. 2008, 13:29:39
Zdravim, nejak mne nejde do hlavy, proc nize uvedena funkce v jednom pripade zobrazi hodnotu spravne a v druhem pripadne zobrazi hodnotu, ktera v poli vubec neni.
function filtr($nazev){ $filtr = array('order' => array('asc' => 'Vzestupnì', 'desc' => 'Sestupnì'), 'limit' => array('10' => '10', '20' => '20', '30' => '30', '40' => '40', '50' => '50') ); foreach($filtr[$nazev] as $klic => $hodnota){ if(!isset($_GET[$nazev]) || !array_key_exists($_GET[$nazev], $filtr[$nazev])){ $zvoleno = key(array_slice($filtr[$nazev], 0 , 1)); } else { $zvoleno = $_GET[$nazev]; } } return $zvoleno; } echo filtr('order'); // zobrazi spravne asc echo "<br />"; echo filtr('limit'); // zobrazi 0 pritom tato hodnota v poli neni |
||
BetaCam Profil |
#2 · Zasláno: 19. 9. 2008, 07:26:21
capricorn
No ono celá ta tvá funkce je nějaká podivná. 1) Tam neni ochrana když se překlepneš ve volání té fukce filtr('arder'); tak ti to vyhodi zákonitě NOTICE, že požaduješ nedefinovanej klíč pole a tim rovnou WARNING, protože foreach nedostane pole. 2) Neinicializuješ proměnné což pokud nastane bod 1. zapříčiní další NOTICE 3) čísla 10, 20, 30, 40, 50 určitě nejsou string, ale integer takže nevím proč je máš v uvozovkách 4) Takhle by to mělo být rychlejší function filter($name){ $key = FALSE; $filter = array('order' => array('asc' => 'vzestupne', 'desc' => 'sestupne'), 'limit' => array(10 => 10, 20 => 20, 30 => 30, 40 => 40, 50 => 50)); if (!array_key_exists($name, $filter)){ return FALSE; } if (isset($_GET[$name])) { $key = array_search($_GET[$name], $filter[$name]); } if ($key === FALSE){ $key = key($filter[$name]); } return $key; } echo filter('order'); echo "<br />"; echo filter('limit'); |
||
Časová prodleva: 16 let
|
0