Ich versuche, die vom Benutzer übermittelten Daten zu überprüfen, und zwar von $_POST
hat mindestens die gleichen Elemente, die mein übergebenes Array hat. Ich tue das, weil ich diese Elemente später verwenden werde, indem ich $_POST['element']
und ich mag keine Fehlermeldungen, die besagen, dass das Element nicht existiert (nicht gesetzt ist) :)
Ich möchte nicht etwas verwenden wie isset($_POST['x'], $_POST['y'], $_POST['z'])
denn jedes Mal, wenn ich neu schreiben muss $_POST
und es scheint auch unlesbar zu sein.
Ich habe versucht, die in_array(array('x', 'y', 'z'), $_POST)
aber es funktioniert nicht (es wird false
wenn es zurückkehren sollte true
). Irgendwelche Ideen, wie das funktionieren könnte? :) Ich bin sicher, dass ich leere Strings als $_POST['x']
, $_POST['y']
y $_POST['z']
. Ich habe sogar versucht, die Werte von Schlauch drei zu ändern $_POST
Elemente auf etwas anderes als eine leere Zeichenkette zu ändern - trotzdem funktioniert es nicht wie erwartet :(
Danke für den Ratschlag! :)
Bearbeiten:
Ich habe gerade herausgefunden, dass in_array()
prüft Werte, nicht Schlüssel. Dann habe ich versucht, wie folgt zu tun...
in_array(array('title', 'slug', 'content'), array_keys($_POST))
Dennoch kehrt sie zurück false
. Wie kommt es dazu? ;/
Bearbeiten #2:
Okay, hier sind die Ergebnisse der Fehlersuche...
Eingehend $_POST
:
array(3) {
["title"]=>
string(0) ""
["slug"]=>
string(0) ""
["content"]=>
string(0) ""
}
Ergebnis der array_keys($_POST)
:
array(3) {
[0]=>
string(5) "title"
[1]=>
string(4) "slug"
[2]=>
string(7) "content"
}
Ergebnis der in_array(array('title', 'slug', 'content'), array_keys($_POST))
:
bool(false)
Die Frage... warum ist es false
? Ich habe alles richtig gemacht, so viel ich weiß.
Bearbeiten #3:
Am Ende habe ich eine eigene Methode namens Arr::keys_exists($keys, $array)
.