Maison >développement back-end >tutoriel php >Problèmes et solutions lors de l'utilisation de la fonction in_array en PHP

Problèmes et solutions lors de l'utilisation de la fonction in_array en PHP

高洛峰
高洛峰original
2016-12-22 13:10:061173parcourir

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 !


Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn