Maison  >  Article  >  développement back-end  >  Quelle construction PHP est la meilleure pour vérifier l'existence des éléments d'un tableau : isset ou array_key_exists ?

Quelle construction PHP est la meilleure pour vérifier l'existence des éléments d'un tableau : isset ou array_key_exists ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-10-19 06:22:02442parcourir

Which PHP Construct Is Better for Verifying Array Element Existence: isset or array_key_exists?

Utilisation d'isset ou array_key_exists pour vérifier l'existence d'un élément de tableau

Lorsque vous cherchez à vérifier la présence d'un élément de tableau, vous pouvez utiliser soit l'isset construction de langage ou la fonction array_key_exists.

isset

Cette approche est potentiellement plus efficace car ce n'est pas une fonction. Cependant, il peut renvoyer false si l'élément existe mais a une valeur NULL.

Considérez le tableau suivant :

<code class="php">$a = array(
    123 => 'glop', 
    456 => null, 
);</code>

Utiliser isset pour tester l'existence d'un élément :

<code class="php">var_dump(isset($a[123])); // true
var_dump(isset($a[456])); // false
var_dump(isset($a[789])); // false</code>

array_key_exists

En revanche, array_key_exists évalue uniquement la présence de la clé, quelle que soit sa valeur.

Utiliser array_key_exists avec le même tableau :

<code class="php">var_dump(array_key_exists(123, $a)); // true
var_dump(array_key_exists(456, $a)); // true
var_dump(array_key_exists(789, $a)); // false</code>

Choisir la bonne approche

Pour les scénarios où l'élément est garanti d'avoir une valeur non NULL, isset peut être préférable en raison de son efficacité. Sinon, array_key_exists peut être plus approprié.

Dans votre exemple spécifique, vous pouvez modifier votre code comme suit en utilisant isset :

<code class="php">if (!isset(self::$instances[$instanceKey])) {
    $instances[$instanceKey] = $theInstance;
}</code>

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!

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