2016-10-17 4 views
0

Ich habe dieses Programm:

if (!isset($_POST['foo'])) doSomeThing1(); 
else { 
    if (!array_key_exists('foo',$_POST)) doSomeThing2(); 
    else doSomeThing3(); 
} 

aber ... geht das Programm auf den 3D-Fall, mit dem Fehler Fehler: undefined index 'foo' (in file.php, line xxx).

Können Sie erklären, warum? Warum array_key_exists gibt true zurück (was das Skript in den Fall 3d bringt), aber anschließend ist es "undefinierter Index"?

+1

Haben Sie versucht, Ihre Daten mit einem 'var_dump ($ _ POST)' zu betrachten? Das könnte uns auch beim Debuggen helfen. auch - was ist in file.php: xxx? Der Code, der den Fehler verursacht, könnte relevant sein, um den Fehler zu debuggen, meinst du nicht? –

+0

Was bedeutet 'doSomeThing3()'? –

+0

Bitte lassen Sie uns wissen, was Sie erwarten, wenn in $ _POST die Taste 'foo' gedrückt wird. Wenn es keine 'foo' Taste in $ _POST usw. gibt –

Antwort

1
if (!isset($_POST['foo'])) doSomeThing1(); 
else { 
    if (!array_key_exists('foo',$_POST)) doSomeThing2(); 
    else doSomeThing3(); 
} 

Per dieser Code, wie es funktioniert ...

!isset($_POST['foo']) ==> liefert true und führt dosomeThing1(), wenn kein 'foo' Schlüssel in $_POST Array ist

wenn $_POST nicht hat jeder Schlüssel, den es überprüft !array_key_exists('foo',$_POST)

array_key_exists('foo', $_POST) Überprüfung, ob Schlüssel ist da in $_POST Array oder nicht. array_key_exists('foo', $_POST) ist das gleiche wie isset($_POST['foo']), so dass es immer doSomeThing3() ausführt, wenn kein Schlüssel in $_POST Array ist.

Ich hoffe, diese Erklärung hilft.

+0

Ok, vielen Dank für Ihre Antwort. – user3022188