Stellen Sie zunächst den Hintergrund der Nachfrage vor:
Rechnungsmethode:
0=Spende (fragen Sie mich nicht warum, historische Gründe)
1=Vergleichsversand
2=Anfrage
3=Elektronische Rechnung
Jetzt müssen wir die vom Benutzer übermittelten Daten überprüfen:
php;auto-links:false;">if(!in_array($_POST['invoice_action'], array(0,1,2,3))){ throw new Exception('请选择正确的发票方式'); }
Zu diesem Zeitpunkt tritt ein Problem auf, wenn der Wert $_POST['invoice_action'] überhaupt nicht existiert. Warum wird dann keine Ausnahme ausgelöst?
Es wurde bestätigt, dass es sich hierbei um eine Falle handelt von PHP als schwach typisierter Sprache, ja, das ist eine Grube Was sollen wir mit einer so großen Grube tun?
Methode 1: in_array unterstützt den dritten Parameter und erzwingt die Datentyperkennung
echo in_array('', array(0)) ? 1 : 0; // 结果:1 echo in_array(null, array(0)) ? 1 : 0; // 结果:1 echo in_array(false, array(0)) ? 1 : 0; // 结果:1
Methode Zwei: Ändern Sie immer noch in Datentyprichtung die 0 im Array in eine Zeichenfolge
echo in_array('', array(0), true) ? 1 : 0; // 结果:0 echo in_array(null, array(0), true) ? 1 : 0; // 结果:0 echo in_array(false, array(0), true) ? 1 : 0; // 结果:0
Zusammenfassung
Oben geht es um PHP-Probleme und Lösungen, die bei der Verwendung der in_array-Funktion auftreten. Ich hoffe, dass dieser Artikel für Freunde hilfreich sein kann, die ebenfalls auf dieses Problem stoßen. Wenn Sie Fragen haben, können Sie eine Nachricht hinterlassen.
echo in_array('', array('0'), true) ? 1 : 0; // 结果:0 echo in_array(null, array('0'), true) ? 1 : 0; // 结果:0 echo in_array(false, array('0'), true) ? 1 : 0; // 结果:0
Weitere Artikel zu Problemen und Lösungen bei der Verwendung der in_array-Funktion in PHP finden Sie auf der chinesischen PHP-Website!