Présentez d'abord le contexte de la demande :
Mode de facturation :
0=Don (ne me demandez pas pourquoi, raisons historiques)
1=Expédition assortie
2=Demande
3=Facture électronique
Nous devons maintenant vérifier les données soumises par l'utilisateur :
php;auto-links:false;">if(!in_array($_POST['invoice_action'], array(0,1,2,3))){ throw new Exception('请选择正确的发票方式'); }
Un problème survient à ce moment-là. Si la valeur $_POST['invoice_action'] n'existe pas du tout, pourquoi aucune exception n'est-elle levée ?
Il a été confirmé qu'il s'agit d'un piège. de PHP en tant que langage faiblement typé, oui, c'est un gouffre
Regardez cet ensemble de code :
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
. Que devons-nous faire avec une si grande fosse ? Contourner ou remplir ?
Méthode 1 : in_array prend en charge le troisième paramètre, forçant la détection du type de données
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
méthode deux : toujours dans le sens du type de données, remplacez le 0 dans le tableau par une chaîne
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
Résumé
Ce qui précède concerne les problèmes PHP et les solutions rencontrés lors de l'utilisation de la fonction in_array. J'espère que cet article pourra être utile aux amis qui rencontrent également ce problème. Si vous avez des questions, vous pouvez laisser un message pour communiquer.
Pour plus d'articles liés aux problèmes et aux solutions lors de l'utilisation de la fonction in_array en PHP, veuillez faire attention au site Web chinois de PHP !