Autor | Zpráva | ||
---|---|---|---|
Stano Profil |
Dobrý deň,
mam formular: <form> <input type=checkbox value=a name=data[a]> <input type=checkbox value=b name=data[b]> <input type=checkbox value=c name=data[c]> </form> po odoslaní mám z toho pole $_POST = array('data' => array('a' => 'a', 'b' => 'b', 'c' => 'c')) a teraz moja otázka znie ako v php zistiť ktorý checkbox bol a ktorý nebol odoslaný. Názvy checkboxov sú generované automaticky, takže v php mam stringy data[a] a ja teraz potrebujem niečo ako: isset($_POST[data[a]]) len toto samozrejme nefunguje. |
||
Keeehi Profil |
#2 · Zasláno: 22. 1. 2013, 15:02:19
Tohle fungovat bude:
isset($_POST["data"]["a"]) Ale pokud jsou toto reálné hodnoty (text data je u všech checkboxů a znak v závorce u name odpovídá znaku u value) tak je to ošklivý návrh. |
||
Stano Profil |
tamto samozrejme funguje len ja mam iny vstup
string: data[a] string: data[b] string: data[c] pole napr: array('data' => array('c' => 'c')) function my_isset($string, $array){ } všetko generovane automaticky takže nemám možnosť to preddefinovať. A nechcem používať eval(). nie niesu to reálne hodnoty. |
||
Stano Profil |
síce nie najkrajšie riešenie ale zdá sa byť funkčné
function my_isset($variable, $array = array()) { $variable_array = explode('[', $variable); if (isset($variable) AND empty($array)) { return True; } foreach ($variable_array as $variable_part) { $variable_part = str_replace(']', '', $variable_part); if (!isset($array[$variable_part])) { return false; } else { $array = $array[$variable_part]; } } return true; } |
||
Časová prodleva: 11 let
|
0