Heim >Backend-Entwicklung >PHP-Tutorial >Probleme und Lösungen bei der Verwendung der in_array-Funktion in PHP

Probleme und Lösungen bei der Verwendung der in_array-Funktion in PHP

高洛峰
高洛峰Original
2016-12-22 13:10:061172Durchsuche

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn