Cette fois, je vais vous montrer comment utiliser la conversion implicite de in_array, et quelles sont les précautions lors de l'utilisation de la conversion implicite de in_array. Ce qui suit est un cas pratique, jetons un coup d'oeil.
Problème
Lors de l'écriture d'une interface aujourd'hui, vous devez transmettre un grand nombre de paramètres d'informations de base. Les paramètres sont de deux types : int et string. Pour la commodité de la vérification, je prévois de mettre tous les paramètres dans le tableau, puis d'utiliser in_array(0, $param) pour déterminer si le paramètre int est 0, puis de déterminer séparément si le paramètre de chaîne est vide. L'exemple de code est. comme suit :
if(in_array(0, $param) || $param['img'] == '') { $this->errorCode = 10030; $this->errorMessage = '参数不正确'; return false; }
Cependant, lors de l'auto-test, j'ai constaté 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 :
Non numérique . La chaîne de caractères est comparée à un entier et 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
La solution
in_array ajoute un troisième paramètre true, qui est utilisé pour vérifier si les données pour rechercher sont du même type que la valeur du tableau de cette manière. , la fonction ne peut être utilisée que lorsque l'élément existe dans le tableau et Le type de donnéesrenvoie vrai uniquement lorsqu'il est identique à la valeur donnée
Pour le métier que j'ai présenté ci-dessus, vous peut être plus rigoureux et stocker des données de type int dans un tableau et une chaîne dans un tableau, deux types différents Les tableaux sont vérifiés séparément, afin que les problèmes ci-dessus ne se produisent pas
Je pense que vous maîtrisez la méthode après avoir lu C'est le cas dans cet article. Pour des informations plus intéressantes, veuillez prêter attention aux autres articles connexes sur le site Web chinois de PHP !
Lecture recommandée :
Comment utiliser la fonction récursive de PHP
Explorer les données sur les produits Tmall et Taobao
Implémentation de la réinitialisation du mot de passe Laravel en PHP
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!