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
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]
a
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;
    }

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: