Überprüfen Sie, ob der Array-Wert gesetzt und null ist
Lesezeit: 2 Minuten
So prüfen Sie, ob eine Array-Variable vorhanden ist
$a = array('a'=>1, 'c'=>null);
gesetzt und ist null.
function check($array, $key)
{
if (isset($array[$key])) {
if (is_null($array[$key])) {
echo $key . ' is null';
}
echo $key . ' is set';
}
}
check($a, 'a');
check($a, 'b');
check($a, 'c');
Ist es in PHP möglich, eine Funktion zu haben, die prüft, ob $a[‘c’] null ist und wenn $a[‘b’] existieren ohne “PHP Notice: …”-Fehler?
Ich erhalte keine Hinweiswarnungen mit Ihrem Code.
– Barmar
20. Juli 2013 um 22:01 Uhr
nickb
Verwenden array_key_exists() Anstatt von isset()Weil isset() wird zurückkehren false wenn die Variable ist nullwohingegen array_key_exists() prüft nur, ob der Schlüssel im Array vorhanden ist:
function check($array, $key)
{
if(array_key_exists($key, $array)) {
if (is_null($array[$key])) {
echo $key . ' is null';
} else {
echo $key . ' is set';
}
}
}
@pulzarraider warum hast du ersetzt is_null() mit ===?
– Ivanka Todorova
29. Juni 2016 um 8:38 Uhr
Weil es schneller ist.
– Pulsarräuber
29. Juni 2016 um 8:42 Uhr
@pulzarraider – Irgendwelche Beweise, die diese Behauptung untermauern? Denn dieser Beitrag und dieser Beitrag scheint Ihnen nicht zuzustimmen, spart bestenfalls Nanosekunden und macht Ihre Bearbeitung zu einer überflüssigen Mikrooptimierung.
– Nickb
29. Juni 2016 um 13:20 Uhr
Ja, es ist Mikrooptimierung, aber warum machen Sie Ihre Funktion nicht so schnell wie möglich? Isset() ist etwas langsamer, weil es ein Funktionsaufruf ist.
– Pulsarräuber
30. Juni 2016 um 10:52 Uhr
Sie können es als Referenz übergeben:
function check(&$array, $key)
{
if (isset($array[$key])) {
if (is_null($array[$key])) {
echo $key . ' is null';
}
echo $key . ' is set';
}
}
check($a, 'a');
check($a, 'b');
check($a, 'c');
Sollte keine Benachrichtigung geben
Aber isset wird zurückkehren false auf Nullwerten. Du kannst es versuchen array_key_exists stattdessen
Der ursprüngliche Code gibt auch keine Benachrichtigung. Eine Referenzübergabe ist nicht erforderlich.
– Barmar
20. Juli 2013 um 22:01 Uhr
@nickb, du postest eine Antwort, während ich überprüfte, ob die Dinge, an die ich mich erinnere, richtig waren 🙂
– RiAD
20. Juli 2013 um 22:03 Uhr
@Barmar, ja, mein Fehler
– RiAD
20. Juli 2013 um 22:04 Uhr
Es ist, was ich wollte. Da isset bei null false zurückgibt, mache ich es so: if(!isset($array[$key]) && is_null($array[$key])), was wahr ist, wenn $array[$key] ist Null.
– Bartek Kosa
20. Juli 2013 um 22:10 Uhr
@BartekKosa Ihre Implementierung ist fehlerhaft. Es wird auch true zurückgeben und auf Schlüssel hinweisen, die nicht existieren.
– dev-null-Bewohner
20. Juli 2013 um 22:15 Uhr
10631900cookie-checkÜberprüfen Sie, ob der Array-Wert gesetzt und null istyes
Ich erhalte keine Hinweiswarnungen mit Ihrem Code.
– Barmar
20. Juli 2013 um 22:01 Uhr