Maison > développement back-end > Problème PHP > Discutez du comportement et des méthodes de traitement lorsque l'indice du tableau PHP n'existe pas

Discutez du comportement et des méthodes de traitement lorsque l'indice du tableau PHP n'existe pas

PHPz
Libérer: 2023-04-18 13:48:48
original
519 Les gens l'ont consulté

Dans la programmation PHP, les tableaux sont une structure de données très courante qui peut facilement stocker plusieurs valeurs, et ces valeurs peuvent être récupérées et modifiées à l'aide d'indices. Mais que se passe-t-il lorsqu'on accède à un tableau à l'aide d'un indice inexistant ? Cet article abordera le comportement et les méthodes de traitement lorsque l'indice du tableau PHP n'existe pas.

1. Performances d'un indice de tableau PHP qui n'existe pas

Lorsque le programme tente d'accéder au tableau en utilisant un indice inexistant, PHP affichera différents comportements selon différentes situations. Plus précisément, il existe les trois situations suivantes :

  1. Si vous utilisez un opérateur d'indice distinct "[]" pour fonctionner, aucune erreur ne sera signalée, mais aucune valeur ne sera modifiée ou lue. C'est parce que le tableau ne l'a pas. indice, donc l’opération n’a aucun effet réel. Par exemple :
$arr = array("a","b","c");
echo $arr[3]; // 不会报错,但是没有输出任何值
Copier après la connexion
  1. Si vous utilisez l'opérateur d'affectation "[]=" pour un indice de tableau, PHP créera automatiquement un nouvel indice et attribuera la valeur à l'indice. Par exemple :
$arr = array("a","b","c");
$arr[3] = "d"; // 自动创建下标3,并赋值为"d"
print_r($arr); // 输出Array([0]=>a [1]=>b [2]=>c [3]=>d)
Copier après la connexion
  1. Si la fonction isset() ou empty() est utilisée pour vérifier si l'indice existe, false sera renvoyé. Par exemple :
$arr = array("a","b","c");
var_dump(isset($arr[3])); // 输出bool(false)
var_dump(empty($arr[3])); // 输出bool(true)
Copier après la connexion

2. Comment gérer les indices inexistants dans les tableaux PHP

Lorsqu'un programme utilise un indice inexistant pour accéder à un tableau, afin d'éviter un comportement inattendu, vous pouvez utiliser la méthode suivante :

  1. Utilisez la fonction isset() ou array_key_exists() pour vérifier si l'indice existe. Par exemple :
$arr = array("a","b","c");
if(isset($arr[3]))
{
    echo $arr[3]; // 不会执行
}
if(array_key_exists(3, $arr))
{
    echo $arr[3]; // 不会执行
}
Copier après la connexion
  1. Utilisez des exceptions pour gérer les situations où l'indice n'existe pas. Par exemple :
$arr = array("a","b","c");
try
{
    $value = $arr[3];
}
catch(Exception $e)
{
    echo 'Caught exception: '.$e->getMessage();
    // 输出 Caught exception: Undefined offset: 3
}
Copier après la connexion

Dans l'exemple ci-dessus, lorsque l'on accède au tableau à l'aide d'un indice inexistant, le code lèvera une exception puis gérera l'exception via un bloc try-catch.

  1. Avant d'accéder au tableau, vérifiez la longueur du tableau ou utilisez la fonction count() pour obtenir la longueur du tableau. Par exemple :
$arr = array("a","b","c");
if(count($arr) > 3)
{
    echo $arr[3]; // 不会执行
}
Copier après la connexion

L'inconvénient de cette méthode est que si la longueur du tableau est grande, vous devez parcourir l'intégralité du tableau à chaque fois, ce qui consommera beaucoup de temps et de ressources.

En résumé, lorsqu'un tableau est accédé à l'aide d'un indice inexistant, PHP affichera différents comportements selon différentes situations. Vous pouvez utiliser la fonction isset() ou empty(), la gestion des exceptions et la vérification de la longueur du tableau. comportement inattendu. Lorsque vous utilisez des tableaux, veillez à faire attention à la plage des indices pour éviter les erreurs inutiles.

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!

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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal