Position actuelle: Accueil> Derniers articles> Pourquoi Php Current () renvoie-t-il NULL dans un tableau vide? Analyse des raisons derrière elle

Pourquoi Php Current () renvoie-t-il NULL dans un tableau vide? Analyse des raisons derrière elle

gitbox 2025-08-26

1. Comment fonctionne Current ()

Current () n'est pas une fonction qui obtient simplement le premier élément d'un tableau, il dépend.
Chaque tableau PHP maintient un pointeur en bas, pointant vers "l'élément actuel". Le but de Current () est de renvoyer la valeur indiquée par le pointeur.

  • Si le pointeur pointe vers un élément valide, Current () renvoie la valeur de cet élément.

  • Si le tableau est vide ou si le pointeur a dépassé la plage du tableau, FALSE ou NULL est retourné, selon le contexte.

Dans le cas d'un tableau vide, il n'y a aucun élément à pointer du pointeur, donc la valeur de retour est naturellement nulle .


2. Pourquoi pas faux mais nul ?

Beaucoup de gens ont cette question: il n'y a aucune valeur dans le tableau, alors pourquoi ne pas revenir faux pour indiquer "l'échec"?
La raison en est la suivante: les concepteurs de PHP veulent faire la distinction entre "l'échec de l'exécution de la fonction" et "il n'y a en effet aucun élément dans le tableau".

  • Faux signifie généralement "erreur" ou "échoué";

  • Null exprime plus de manière appropriée "aucune valeur ici".

Par conséquent, appeler Current () dans un tableau vide et retourner null est un choix plus raisonnable.


3. Relation avec reset () et suivant ()

Pour une meilleure compréhension, plusieurs fonctions liées au pointeur du tableau peuvent être comparées:

 <span><span><span class="hljs-variable">$arr</span></span><span> = [</span><span><span class="hljs-number">100</span></span><span>, </span><span><span class="hljs-number">200</span></span><span>];

</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-title function_ invoke__">current</span></span><span>(</span><span><span class="hljs-variable">$arr</span></span><span>); </span><span><span class="hljs-comment">// 100</span></span><span>
</span><span><span class="hljs-title function_ invoke__">next</span></span><span>(</span><span><span class="hljs-variable">$arr</span></span><span>);
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-title function_ invoke__">current</span></span><span>(</span><span><span class="hljs-variable">$arr</span></span><span>); </span><span><span class="hljs-comment">// 200</span></span><span>
</span><span><span class="hljs-title function_ invoke__">next</span></span><span>(</span><span><span class="hljs-variable">$arr</span></span><span>);
</span><span><span class="hljs-title function_ invoke__">var_dump</span></span><span>(</span><span><span class="hljs-title function_ invoke__">current</span></span><span>(</span><span><span class="hljs-variable">$arr</span></span><span>)); </span><span><span class="hljs-comment">// bool(false),Parce que le pointeur traverse la limite</span></span><span>
</span></span>

Ici, lorsque le pointeur du tableau sort des limites, Current () renvoie false .
Dans le tableau vide, aucun pointeur n'existe, donc null est directement retourné. Ces deux situations sont en fait différentes en sémantique:

  • Tableau vide: pas d'éléments pointus → null

  • Tableau non vide mais hors limites: le pointeur échoue → Faux


4. Faites attention à l'utiliser

Lorsque les développeurs utilisent Current () , ils doivent accorder une attention particulière à la différence entre Null et False . Si vous utilisez IF (Current ($ arr)) directement pour juger, il peut s'agir d'ambiguïté car NULL et FAUX sont tous deux traités comme de fausses valeurs dans le contexte booléen.

Une approche plus sûre consiste à utiliser Key () pour aider au jugement:

 <span><span><span class="hljs-variable">$arr</span></span><span> = [];

</span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-title function_ invoke__">key</span></span><span>(</span><span><span class="hljs-variable">$arr</span></span><span>) !== </span><span><span class="hljs-literal">null</span></span><span>) {
    </span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-title function_ invoke__">current</span></span><span>(</span><span><span class="hljs-variable">$arr</span></span><span>);
} </span><span><span class="hljs-keyword">else</span></span><span> {
    </span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"Le tableau est vide ou le pointeur n&#39;est pas valide"</span></span><span>;
}
</span></span>

Cela vous permet de distinguer plus précisément différents scénarios.

  • Étiquettes associées:

    NULL