Maison > php教程 > PHP开发 > Une brève discussion sur l'utilisation de foreach/in_array en PHP

Une brève discussion sur l'utilisation de foreach/in_array en PHP

高洛峰
Libérer: 2017-01-03 14:51:42
original
1441 Les gens l'ont consulté

PHP est très efficace en développement, ce qui est compréhensible, mais il sacrifie l'efficacité d'exécution. La fonction php array est très puissante, mais vous devriez également y réfléchir davantage et essayer plusieurs situations au cas où. Ici, je mentionnerai brièvement les deux pièges rencontrés. Si d'autres sont trouvés dans le futur, je les ajouterai !

Foreach fournit un moyen simple de parcourir le tableau, qui permet de lire facilement le contenu des données ou de l'objet. Cependant, la documentation officielle indique que puisque foreach s'appuie sur le pointeur de tableau interne, modifiant sa valeur dans la boucle. peut provoquer un comportement inattendu. Donc, en gros,
1. N'essayez pas de modifier la valeur à l'intérieur de la boucle, sinon le résultat sera au-delà de ce que vous souhaitez
2. Utiliser '&' est un moyen sûr, bien qu'il soit rarement utilisé ; .Cependant, lorsqu'elle est utilisée, une fois la référence terminée, la fonction unset doit être appelée immédiatement pour détruire la variable, sinon, si cette variable est à nouveau utilisée dans le code suivant, la dernière valeur de la boucle sera modifiée, donc des valeurs inattendues. ​ont été obtenus. Par exemple : lorsque la liste est bouclée, il y aura de nombreuses valeurs désordonnées ou des valeurs nulles dans la dernière ligne de sortie. L'utilisation de unset résout ce problème.

Regardons un exemple

<?php 
/*-------------------------------------------------------------------------*/
/* foreach example 1: value only */
echo "foreach example 1: value only ".&#39;<br />&#39;; 
$a = array(1, 2, 3, 17); 
foreach ($a as $v) { 
echo "Current value of ".$a.":". $v."<br />"; 
} 
?> 
// 运行结果 
foreach example 1: value only 
Current value of $a: 1 
Current value of $a: 2 
Current value of $a: 3 
Current value of $a: 17
Copier après la connexion

in_array, sa signification est de vérifier si la chaîne précédente existe dans le tableau suivant, et dans la plupart des cas, cela fonctionne aussi comme ça, Mais quand le tableau suivant est un entier, tel que array(0,1,2,3), il y aura un problème. PHP intvalifera la chaîne précédente, de sorte que la valeur 0 sera obtenue. Ensuite, si cela se produit, votre S'il y en a. est-ce que cette valeur est dans le tableau, alors l'équation est établie. Est-elle au-delà des attentes ?
Ainsi, lorsqu'il est déterminé que les données suivantes sont un entier, surtout si elles peuvent être 0 (cela peut remplacer toutes les chaînes), vous ne devez plus utiliser cette fonction. Vous pouvez utiliser key_exists à la place, mais les données suivantes ont besoin. à inverser en utilisant array_flip.

Regardons à nouveau un exemple

function search($keyWord, $stack) {//此处判断是应该更新还是插入
 
      foreach ($stack as $key => $val) {
 
        if (in_array($keyWord, $val)) {
 
          return TRUE;
 
        }
 
      }
 
      return FALSE;
 
    }
Copier après la connexion

Que se passe-t-il lorsqu'une chaîne est utilisée comme tableau pour obtenir des valeurs ? PHP est un langage très tolérant aux pannes. Il fera de son mieux pour vous aider à corriger vos erreurs, il convertit donc intelligemment votre indice de référence en un entier. Bien sûr, vous obtenez 0. Ensuite, l'indice de chaîne est 0 et la valeur est You. obtiendra la valeur de la première chaîne. Est-ce au-delà de vos attentes ? La solution consiste à confirmer si la variable est un tableau avant de référencer l'indice is_array.

Pour plus d'articles sur l'utilisation de foreach/in_array en PHP, veuillez faire attention au site Web PHP chinois !

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
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
Recommandations populaires
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal