Position actuelle: Accueil> Derniers articles> Pourquoi la longueur du tableau obtenue après l'utilisation de la fonction d'exploitation ne répond-elle pas aux attentes? Analyse des causes communes de la longueur anormale de la fonction d'exploitation

Pourquoi la longueur du tableau obtenue après l'utilisation de la fonction d'exploitation ne répond-elle pas aux attentes? Analyse des causes communes de la longueur anormale de la fonction d'exploitation

gitbox 2025-06-08

Lorsque vous utilisez la fonction Expoit () de PHP, de nombreux développeurs peuvent rencontrer des situations où la longueur du tableau résultante ne répond pas aux attentes. Le but de la fonction exploit () est de diviser une chaîne en plusieurs sous-chaînes et de renvoyer un tableau. En théorie, la fonction exploit () doit diviser la chaîne en plusieurs parties délimitées par un délimiteur et renvoyer un tableau de longueur correcte. Cependant, parfois la durée du réseau retourné peut ne pas être comme nous nous attendions, et la cause de cela est généralement due à certains détails, que cet article analysera les causes courantes.

Utilisation de base de la fonction exploit ()

La syntaxe de base de la fonction exploit () est la suivante:

 array explode(string $delimiter, string $string[, int $limit = PHP_INT_MAX])
  • $ Delimiter : Demiter, utilisé pour diviser les chaînes.

  • $ String : la chaîne à diviser.

  • $ limit (facultatif): limite la longueur du tableau retourné. Si $ limite n'est pas défini, toutes les pièces divisées sont retournées.

Exemple:

 $string = "apple,banana,orange";
$result = explode(",", $string);
print_r($result);

La sortie sera:

 Array
(
    [0] => apple
    [1] => banana
    [2] => orange
)

Cependant, dans les applications pratiques, nous pouvons rencontrer certaines situations qui nous confondnt, et la longueur du tableau qui en résulte peut ne pas être divisée comme prévu. Ensuite, nous analyserons plusieurs situations communes.


Analyse de cause commune

1. Le délimiteur est une chaîne vide ou n'existe pas

Si $ Delimiter est une chaîne vide ou $ Delimiter n'existe pas dans $ String , la fonction Expoit () renvoie un tableau contenant la chaîne d'origine. Par exemple:

 $string = "apple,banana,orange";
$result = explode("", $string);  // delimiter is an empty string
print_r($result);

Dans cet exemple, comme le délimiteur est une chaîne vide, le tableau renvoyé contiendra chaque caractère en tant qu'élément de tableau.

2. Traitement des chaînes vides ou des caractères blancs

Si la chaîne String $ à diviser est vide ou contient des caractères d'espace blanc (tels que des espaces, des pauses de ligne, etc.), exploit () renverra un tableau de longueur 1, et le seul élément du tableau est la chaîne d'origine. En effet, il n'y a pas de délimiteur valide pour diviser la chaîne.

 $string = "";
$result = explode(",", $string);
print_r($result);

Le résultat de la sortie est:

 Array
(
    [0] => 
)

De même, si la chaîne est composée uniquement de caractères d'espace blanc, tels que "" , exploit () renverra un tableau contenant des chaînes vides par des caractères d'espace blanc.

3. Utilisation des paramètres limites

Le paramètre limite est un paramètre très important dans la fonction Exploit () . Si $ limite est défini, la longueur du tableau retourné sera limitée par elle. Par exemple, lorsque $ limite est inférieur au nombre de pièces à diviser, le dernier élément du tableau contiendra toutes les pièces restantes.

 $string = "apple,banana,orange,grape";
$result = explode(",", $string, 3);
print_r($result);

Résultat de sortie:

 Array
(
    [0] => apple
    [1] => banana
    [2] => orange,grape
)

Comme indiqué ci-dessus, en raison des paramètres de limite , le tableau retourné ne contient que trois éléments et le dernier élément contient toutes les pièces restantes.

4. Il y a un séparateur à la queue

Lorsque la queue d'une chaîne contient un séparateur, exploit () utilisera également la chaîne vide de queue comme élément du tableau. Par exemple, si la chaîne est «Apple, banane» et que le délimiteur est , Expoit () ajoutera un élément vide à la fin.

 $string = "apple,banana,";
$result = explode(",", $string);
print_r($result);

Le résultat de la sortie est:

 Array
(
    [0] => apple
    [1] => banana
    [2] => 
)

Dans ce cas, si vous ne vous attendez pas à la fin de l'élément vide, cela entraînera un élément supplémentaire à ajouter à la longueur du tableau.

5. La chaîne contient plusieurs séparateurs consécutifs

Lorsqu'il existe plusieurs séparateurs consécutifs dans la chaîne à diviser, Exploit () traite ces séparateurs consécutifs en tant que séparateurs multiples, et le résultat est qu'un élément de tableau d'une chaîne vide sera généré.

Par exemple:

 $string = "apple,,banana,,orange";
$result = explode(",", $string);
print_r($result);

Le résultat de la sortie est:

 Array
(
    [0] => apple
    [1] => 
    [2] => banana
    [3] => 
    [4] => orange
)

Plusieurs virgules consécutives ici provoquent plusieurs éléments vides dans le tableau.