Aktueller Standort: Startseite> Neueste Artikel> Warum gibt PHP Current () Null in einem leeren Array zurück? Analyse der Gründe dahinter

Warum gibt PHP Current () Null in einem leeren Array zurück? Analyse der Gründe dahinter

gitbox 2025-08-26

1. Wie Current () funktioniert

Current () ist keine Funktion, die einfach das erste Element eines Arrays erhält, es hängt davon ab.
Jedes PHP -Array behält unten einen Zeiger bei, der auf das "aktuelle Element" zeigt. Der Zweck von Current () besteht darin, den vom Zeiger gerichteten Wert zurückzugeben.

  • Wenn der Zeiger auf ein gültiges Element verweist, gibt Current () den Wert dieses Elements zurück.

  • Wenn das Array leer ist oder der Zeiger den Bereich des Arrays überschritten hat, wird Falsch oder Null je nach Kontext zurückgegeben.

Bei einem leeren Array gibt es überhaupt kein Element für Zeiger, sodass der Rückgabewert von Natur aus null ist.


2. Warum nicht falsch , aber null ?

Viele Menschen haben diese Frage: Es gibt keinen Wert im Array. Warum also nicht False zurückgeben, um "Fehler" anzuzeigen?
Der Grund ist: PHP -Designer wollen zwischen "fehlgeschlagener Funktionen" und "Es gibt tatsächlich keine Elemente im Array".

  • Falsch bedeutet normalerweise "Fehler" oder "fehlgeschlagen";

  • NULL drückt hier "keinen Wert hier" aus.

Daher ist es eine vernünftigere Wahl, Current () in einem leeren Array und zurückzukehren .


3. Beziehung zu Reset () und Next ()

Für ein besseres Verständnis können mehrere Array-Zeigerfunktionen verglichen werden:

 <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),Weil der Zeiger die Grenze überschreitet</span></span><span>
</span></span>

Wenn der Array -Zeiger hier aus den Grenzen geht, gibt Current () false zurück.
Im leeren Array gibt es keinen Zeiger, so dass Null direkt zurückgegeben wird. Diese beiden Situationen sind in der Semantik tatsächlich unterschiedlich:

  • Leeres Array: Keine zeigbaren Elemente → Null

  • Nicht leeres Array, aber außerhalb der Grenzen: Zeiger fällt aus → Falsch


4. achten Sie darauf, es zu benutzen

Wenn Entwickler Current () verwenden, müssen sie den Unterschied zwischen Null und Falsch besondere Aufmerksamkeit schenken. Wenn Sie verwenden , wenn (aktuell ($ arr)) direkt zu beurteilen, kann dies Unklarheit sein, da Null und False im booleschen Kontext als falsche Werte behandelt werden.

Ein sichererer Ansatz besteht darin , Key () zu verwenden, um das Urteil zu unterstützen:

 <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">"Das Array ist leer oder der Zeiger ist ungültig"</span></span><span>;
}
</span></span>

Auf diese Weise können Sie verschiedene Szenarien genauer unterscheiden.

  • Verwandte Tags:

    NULL