Lors du traitement des tableaux en PHP, nous utilisons souvent un ensemble de fonctions qui fonctionnent des pointeurs internes, tels que Current () , Next () , Prev () , Reset () , Key () et End () que nous voulons expliquer en profondeur aujourd'hui. Bien que ces fonctions puissent sembler simples, leurs performances en matière d'itération sur les structures de données sont souvent facilement négligées, voire mal comprises. Cet article se concentrera sur la fonction finale () et analysera ses fonctions, l'utilisation commune, les précautions et les relations avec d'autres fonctions de pointeur en profondeur.
End () est une fonction qui pointe un pointeur de tableau interne vers le dernier élément du tableau et renvoie la valeur de cet élément. La syntaxe est très simple:
mixed end(array &$array)
Notez que le paramètre ici est une référence ( & $ array ), indiquant que fin () affectera directement l'état du pointeur interne du tableau.
$arr = [1, 2, 3, 4];
$last = end($arr);
echo $last; // Sortir 4
Dans ce code, END ($ arr) déplacera le pointeur intérieur du tableau vers le dernier élément 4 et le renverra.
Le tableau de PHP n'est pas seulement une collection de paires de valeurs clés, il conserve également un "pointeur interne" pour suivre la position de l'élément actuel lorsque ForEach n'est pas explicitement utilisé. La fonction centrale de end () est de pointer ce pointeur interne vers le dernier élément du tableau.
En pratique, nous faisons souvent ceci:
$arr = ['a' => 100, 'b' => 200, 'c' => 300];
echo current($arr); // 100
next($arr);
echo current($arr); // 200
end($arr);
echo current($arr); // 300
Vous constaterez que End () modifie la position du pointeur, et l'appel ultérieur à Current () pointe vers le dernier élément.
Pour mieux comprendre fin () , nous le comparons à plusieurs autres fonctions qui fonctionnent des pointeurs:
fonction | effet |
---|---|
réinitialiser ($ arr) | Déplacer le pointeur vers le premier élément |
fin ($ arr) | Déplacer le pointeur vers le dernier élément |
Suivant ($ arr) | Déplacez le pointeur en avant par un |
prev ($ arr) | Déplacer le pointeur un par un |
Current ($ arr) | Obtenez l'élément pointé par le pointeur actuel |
clé ($ arr) | Obtenez le nom de clé de l'élément pointé par le pointeur actuel |
En comprenant ces fonctions, vous pouvez contrôler de manière flexible le processus de traversée du tableau, et non seulement sur FOREACH .
C'est l'utilisation la plus typique:
$data = ['first', 'second', 'third'];
$lastItem = end($data);
echo $lastItem; // third
$comments = [
['id' => 1, 'user' => 'Tom'],
['id' => 2, 'user' => 'Jerry']
];
$last = end($comments);
if ($last['user'] === 'Jerry') {
echo "Le dernier commentaire est de Jerry";
}
$mapping = ['a' => 1, 'b' => 2, 'c' => 3];
end($mapping);
$lastKey = key($mapping);
echo $lastKey; // Sortir c
$pages = [
'https://m66.net/page/1',
'https://m66.net/page/2',
'https://m66.net/page/3'
];
$lastPageUrl = end($pages);
echo $lastPageUrl; // https://m66.net/page/3
Si vous avez effectué des opérations end () et suivant () sur le même tableau plusieurs fois sans réinitialisation () , la position actuelle du pointeur peut ne pas être ce que vous attendez, en particulier lors du multiplexage des variables de tableau dans une boucle.
$empty = [];
var_dump(end($empty)); // bool(false)
Ce comportement peut causer des problèmes lorsque vous jugez les types, surtout lorsque vous ne voulez pas que False soit confondu avec les valeurs des éléments de tableau, vous devez utiliser === pour juger le type.
$arr = [true, false];
$last = end($arr);
if ($last == false) {
echo "La dernière valeur est false Ou n'existe pas";
}
La méthode d'écriture ci-dessus est sujette aux erreurs, et un jugement congruent doit être utilisé:
if ($last === false) {
echo "C'est en effet false,Pas sans valeur";
}
Avant d'utiliser fin () , assurez-vous de connaître la position du pointeur du tableau actuel et de l'appel Reset () si nécessaire.
Évitez d'appeler end () sur un tableau dans Forach , ce qui peut provoquer des effets secondaires inattendus.
Vous voulez obtenir la dernière valeur sans affecter le pointeur? Vous pouvez utiliser array_values () ou array_key_last () pour coopérer avec le traitement:
$last = array_values($arr)[count($arr) - 1];
ou:
$lastKey = array_key_last($arr);
$last = $arr[$lastKey];
Bien que la fonction fin () soit petite, elle joue un rôle important dans les opérations de réseau PHP. Maîtriser et vous pouvez contrôler plus efficacement la logique itérative du tableau et écrire du code plus flexible et robuste. J'espère que cet article peut vous aider à bien comprendre l'essence et l'utilisation de fin () .