W3docs

current()

Découvrez la fonction current() en PHP : comment elle lit le pointeur interne d'un array sans le déplacer, avec exemples pratiques.

Introduction

Chaque array PHP possède un pointeur interne — un curseur caché qui désigne l'un de ses éléments comme « courant ». La fonction current() lit la valeur à l'emplacement de ce curseur sans le déplacer. current() est ainsi la moitié lecture de la boîte à outils de parcours manuel des arrays en PHP, le pendant des fonctions de navigation next(), prev(), reset() et end().

Ce chapitre explique précisément ce qu'est le pointeur interne, comment current() se comporte aux limites d'un array, et les pièges à connaître avant de l'utiliser.

Qu'est-ce que la fonction current() en PHP ?

current() retourne la valeur de l'élément sur lequel se trouve le pointeur interne de l'array. Elle ne fait pas avancer le pointeur : l'appeler plusieurs fois renvoie donc toujours la même valeur, tant que rien d'autre ne déplace le curseur.

Lorsqu'un array est créé, le pointeur se positionne sur le premier élément. Les fonctions qui le déplacent sont :

  • next() — avance d'un élément, puis renvoie cette valeur.
  • prev() — recule d'un élément, puis renvoie cette valeur.
  • reset() — revient au premier élément.
  • end() — saute au dernier élément.

current() est la seule de ces fonctions qui lit sans déplacer.

Syntaxe de la fonction current()

current(array $array): mixed

Elle prend un seul argument — l'array à inspecter — et retourne la valeur à la position courante du pointeur, ou false si l'array est vide ou si le pointeur a dépassé le dernier élément.

Attention : Comme current() retourne false en fin d'array, vous ne pouvez pas l'utiliser pour détecter la fin d'un array qui contient légitimement une valeur false. Utilisez key(), qui retourne null au-delà de la fin, lorsque vous avez besoin d'une vérification fiable de fin d'array.

Exemple de base

php— editable, runs on the server

Le pointeur part du premier élément, donc ceci affiche apple. Appelez current() dix fois de plus et vous obtenez toujours apple — rien n'a déplacé le curseur.

Déplacer le pointeur avec next() et prev()

current() devient utile en combinaison avec les fonctions de navigation. Chacune repositionne le curseur, et current() (ou la valeur renvoyée par la fonction elle-même) indique où vous vous trouvez.

<?php

$fruits = ['apple', 'banana', 'cherry'];

echo current($fruits) . "\n"; // apple  (pointer at index 0)
next($fruits);
echo current($fruits) . "\n"; // banana (pointer at index 1)
next($fruits);
echo current($fruits) . "\n"; // cherry (pointer at index 2)
prev($fruits);
echo current($fruits) . "\n"; // banana (pointer back at index 1)
reset($fruits);
echo current($fruits) . "\n"; // apple  (pointer reset to start)

La sortie est :

apple
banana
cherry
banana
apple

Ce qui se passe en fin d'array

Avancez le pointeur au-delà du dernier élément et current() retourne false :

<?php

$fruits = ['apple', 'banana', 'cherry'];

end($fruits);                       // pointer on the last element
echo current($fruits) . "\n";       // cherry
next($fruits);                      // step beyond the last element
var_dump(current($fruits));         // bool(false)

Ceci affiche :

cherry
bool(false)

C'est pourquoi la mise en garde ci-dessus est importante : un false retourné par current() peut signifier « au-delà de la fin » ou « la valeur de l'élément est réellement false ».

current() et foreach

Une surprise fréquente : foreach itère sur un array sans utiliser ni déplacer son pointeur interne. Ainsi, current() n'est pas affectée par une boucle foreach et reflète toujours ce que les fonctions de déplacement ont défini en dernier.

<?php

$fruits = ['apple', 'banana', 'cherry'];

foreach ($fruits as $fruit) {
    // looping does not touch the internal pointer
}

echo current($fruits); // apple — still at the start

Ceci affiche apple, pas false. Si vous souhaitez contrôler manuellement la position, utilisez next()/current() ; si vous voulez simplement parcourir chaque élément, utilisez foreach.

Quand utiliser current()

Recourez à current() lorsque vous avez besoin d'un parcours avec état d'un array — un parcours où vous avancez le curseur sur plusieurs appels de fonctions ou itérations de boucle et devez consulter l'élément actif. Cas typiques :

  • Traitement d'un array de type file d'attente en jonglant avec next() et prev().
  • Lire le premier élément simplement : current($array) retourne la première valeur sans avoir besoin de sa clé.
  • Implémenter un curseur personnalisé sur un jeu de données.

Pour une itération ordinaire, préférez foreach — c'est plus clair et insensible aux surprises liées au pointeur.

Conclusion

current() lit la valeur à l'emplacement du pointeur interne d'un array sans le déplacer, en faisant la moitié lecture du kit de parcours manuel de PHP aux côtés de next(), prev(), reset() et end(). Retenez ses deux comportements aux limites : elle retourne la même valeur tant que rien d'autre ne déplace le curseur, et elle retourne false au-delà de la fin de l'array — utilisez donc key() lorsque vous devez détecter la fin de manière fiable.

Pratique

Pratique
Que fait la fonction current() en PHP ?
Que fait la fonction current() en PHP ?
Was this page helpful?