<span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-comment">// Dieser Artikel wird diskutieren PHP Mitte current() Schlüsselwertprobleme, auf die Funktionen beim Umgang mit assoziativen Arrays auftreten können。</span></span><span>
</span><span><span class="hljs-comment">// -----------------------------------------------------------------------------</span></span><span>
<span class="hljs-comment">/**
* current() Die Funktion ist PHP Mitte用于获取数组内部指针当前指向元素的值的函数。
* Für assoziative Arrays,current() Gibt den Elementwert zurück, der der aktuellen Position des Zeigers entspricht,Keine Schlüsselnamen beteiligt。
*
* Aber im Umgang mit einigen assoziativen Arrays,Möglicherweise begegnen Sie Probleme mit Konfliktproblemen von Schlüsselwert,Es spiegelt sich hauptsächlich in den folgenden Aspekten wider:
*
* 1. Überschreibt durch wiederholte Schlüssel verursacht
* PHP 的关联数组Mitte,Der Schlüsselname muss eindeutig sein。wie果existieren数组定义或合并过程Mitte出现重复的Schlüssel名,
* Die folgenden Werte überschreiben die vorherigen Werte,Verursacht Datenverlust,current() Der erhaltene Wert wird ebenfalls betroffen sein。
*
* 2. Zeiger bewegen Verwirrung
* current() Interner Zeiger, der vom Array abhängt。wie果existieren循环Mitte错误verwenden指针移动函数(wie next()、prev())
* ,Kann verursachen current() Der zurückgegebene Wert ist nicht der erwartete,Vor allem im Umgang mit komplexen assoziativen Arrays ist es schwieriger zu überprüfen。
*
* 3. Die Mischung von Schlüsselwerttypen führt zu Unsicherheit
* Wenn eine Array -Taste sowohl numerische Tasten als auch Stringschlüssel enthält,PHP Die Zahlenschlüssel werden automatisch sortiert,Stringschlüssel halten die Einfügungsreihenfolge bei。
* Dieses Mischschlüssel -Array verwendet current() Stunde,wie果期望按某种顺序访问,Es können unerwartete Ergebnisse auftreten。
*
* Das Folgende ist eine detaillierte Beschreibung dieser Probleme durch Beispielcode:
*/</span>
</span><span><span class="hljs-variable">$arr</span></span><span> = [
</span><span><span class="hljs-string">"a"</span></span><span> => </span><span><span class="hljs-string">"apple"</span></span><span>,
</span><span><span class="hljs-string">"b"</span></span><span> => </span><span><span class="hljs-string">"banana"</span></span><span>,
</span><span><span class="hljs-string">"a"</span></span><span> => </span><span><span class="hljs-string">"apricot"</span></span><span>, </span><span><span class="hljs-comment">// Tasten wiederholen 'a',Der hinter 'apricot' Bedeckt 'apple'</span></span><span>
</span><span><span class="hljs-number">1</span></span><span> => </span><span><span class="hljs-string">"one"</span></span><span>,
</span><span><span class="hljs-string">"1"</span></span><span> => </span><span><span class="hljs-string">"one-string"</span></span><span>, </span><span><span class="hljs-comment">// Zahlenschlüssel 1 und Stringschlüssel "1" existieren PHP Mitte视为相同Schlüssel,Wird abdecken</span></span><span>
</span><span><span class="hljs-string">"2"</span></span><span> => </span><span><span class="hljs-string">"two"</span></span><span>,
];
</span><span><span class="hljs-comment">// Ausgabearray -Inhalt</span></span><span>
</span><span><span class="hljs-title function_ invoke__">var_dump</span></span><span>(</span><span><span class="hljs-variable">$arr</span></span><span>);
<span class="hljs-comment">/**
* Das Ergebnis ist:
* array(4) {
* ["a"]=>
* string(7) "apricot"
* ["b"]=>
* string(6) "banana"
* [1]=>
* string(10) "one-string"
* ["2"]=>
* string(3) "two"
* }
*
* Hier gesehen,Schlüssel 'a' Der erste Wert von 'apple' Bedeckt,Zahlenschlüssel 1 und Stringschlüssel "1" Als gleich betrachten,
* Der Endwert ist die letzte Zuordnung 'one-string'。
*/</span>
</span><span><span class="hljs-comment">// verwenden current() Holen Sie sich den aktuellen Elementwert</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>) . PHP_EOL; </span><span><span class="hljs-comment">// Ausgabe 'apricot'</span></span><span>
</span><span><span class="hljs-comment">// Bewegen Sie den Zeiger und holen Sie ihn erneut ab</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>) . PHP_EOL; </span><span><span class="hljs-comment">// Ausgabe 'banana'</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>) . PHP_EOL; </span><span><span class="hljs-comment">// Ausgabe 'one-string'</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>) . PHP_EOL; </span><span><span class="hljs-comment">// Ausgabe 'two'</span></span><span>
<span class="hljs-comment">/**
* Zusammenfassen:
* - current() Gibt den Wert zurück, auf den der aktuelle Zeiger hingewiesen wird,不考虑Schlüssel的唯一性和冲突。
* - 关联数组MitteSchlüssel冲突导致的覆盖问题影响了数组内容,So der Einfluss current() Rückgabeergebnisse。
* - 开发Stunde应避免定义或合并StundeSchlüssel名重复,特别是字符串Schlüssel和Zahlenschlüssel的混合verwenden。
* - verwenden current() Stunde,Seien Sie vorsichtig mit dem Zustand des internen Zeigers,Stellen Sie sicher, dass der Zeiger auf das richtige Element zeigt。
*/</span>
</span><span><span class="hljs-meta">?></span></span><span>
</span></span>