Lors de l'écriture d'une interface aujourd'hui, je dois transmettre un grand nombre de paramètres d'informations de base. Les paramètres sont de deux types : int et string. Pour faciliter la vérification, je prévois de mettre tous les paramètres dans un tableau et. puis utilisez in_array (0, $param) pour déterminer si le paramètre int est 0, puis déterminez séparément si le paramètre string est vide. L'exemple de code est le suivant :
if(in_array(0, $param) || $param['img'] == '') { $this->errorCode = 10030; $this->errorMessage = '参数不正确'; return false; }
Il peut être auto-testé. J'ai découvert que si les paramètres corrects sont transmis, une invite indiquant que les paramètres sont incorrects sera renvoyée ! ! !
La raison
Cette situation se produit précisément parce que in_array pose des problèmes. in_array(search,array) équivaut à comparer chaque valeur du tableau avec la comparaison de recherche, puisque. en plus du paramètre int dans mon tableau $param, il existe également un paramètre string, qui équivaut à utiliser string et int pour comparer les règles de conversion implicites de PHP :
Chaîne non numérique et entier. À titre de comparaison, la chaîne est automatiquement convertie en int(0)
L'exemple suivant vérifie notre déclaration :
<?php $a = (int)'abc'; var_dump($a); //int(0) $c = array(0,1,2,3); if(in_array('abc', $c)) { echo 'exist'; } else { echo 'not exist'; } //exist
Solution
in_array ajoute un troisième paramètre true pour vérifier si le type des données recherchées et la valeur du tableau sont les mêmes, afin que la fonction ne puisse vérifier que si l'élément existe dans le tableau et le type de données Renvoie vrai uniquement lorsqu'il est identique à la valeur donnée
Pour le métier que j'ai présenté ci-dessus, je peux être plus rigoureux et stocker des données de type int dans un tableau, chaîne dans un tableau, et effectuez l'étalonnage des données sur les deux types différents de tableaux respectivement. De cette manière, les problèmes ci-dessus ne se produiront pas
Recommandations associées :
À propos de quelques exemples. de conversion implicite et résumé en JavaScript
Explication détaillée de la conversion implicite javascript
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!