<span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-comment">// Cet article discutera PHP milieu current() Les problèmes de conflit de valeur clé que les fonctions peuvent rencontrer lorsqu'ils traitent avec des réseaux associatifs。</span></span><span>
</span><span><span class="hljs-comment">// -----------------------------------------------------------------------------</span></span><span>
<span class="hljs-comment">/**
* current() La fonction est PHP milieu用于获取数组内部指针当前指向元素的值的函数。
* Pour les tableaux associatifs,current() Renvoie la valeur de l'élément correspondant à la position actuelle du pointeur,Aucun nom de clé impliqué。
*
* Mais quand il s'agit de certains tableaux associatifs,Vous pouvez rencontrer des problèmes de conflit de valeur clé,Il se reflète principalement dans les aspects suivants:
*
* 1. Écraser causé par des clés répétées
* PHP 的关联数组milieu,Le nom clé doit être unique。comme果exister数组定义或合并过程milieu出现重复的clé名,
* Les valeurs suivantes remplaceront les valeurs précédentes,Provoque une perte de données,current() La valeur obtenue sera également affectée。
*
* 2. Pointer déplacer la confusion
* current() Pointeur interne qui dépend du tableau。comme果exister循环milieu错误utiliser指针移动函数(comme next()、prev())
* ,Peut causer current() La valeur retournée n'est pas celle attendue,Surtout lorsque vous traitez avec des tableaux associatifs complexes, il est plus difficile de vérifier。
*
* 3. Le mélange de types de valeurs clés conduit à l'incertitude
* Lorsqu'une touche de tableau contient à la fois des touches numériques et des touches de chaîne,PHP Les clés numériques seront triées automatiquement,Les touches de chaîne gardent l'ordre d'insertion。
* Ce tableau de clés mixte utilise current() heure,comme果期望按某种顺序访问,Des résultats inattendus peuvent se produire。
*
* Ce qui suit est une description détaillée de ces problèmes via un exemple de code:
*/</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">// Répéter les clés 'a',Celui derrière 'apricot' Couvert '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">// Clés de numéro 1 et les touches de chaîne "1" exister PHP milieu视为相同clé,Couvrira</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">// Contenu du tableau de sortie</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">/**
* Le résultat est:
* array(4) {
* ["a"]=>
* string(7) "apricot"
* ["b"]=>
* string(6) "banana"
* [1]=>
* string(10) "one-string"
* ["2"]=>
* string(3) "two"
* }
*
* Vu ici,clé 'a' La première valeur de 'apple' Couvert,Clés de numéro 1 et les touches de chaîne "1" Être considéré comme le même,
* La valeur finale est la dernière affectation 'one-string'。
*/</span>
</span><span><span class="hljs-comment">// utiliser current() Obtenez la valeur d'élément actuelle</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">// Sortir 'apricot'</span></span><span>
</span><span><span class="hljs-comment">// Déplacez le pointeur et obtenez-le à nouveau</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">// Sortir '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">// Sortir '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">// Sortir 'two'</span></span><span>
<span class="hljs-comment">/**
* Résumer:
* - current() Renvoie la valeur indiquée par le pointeur actuel,不考虑clé的唯一性和冲突。
* - 关联数组milieuclé冲突导致的覆盖问题影响了数组内容,Ainsi, l'influence current() Résultats de retour。
* - 开发heure应避免定义或合并heureclé名重复,特别是字符串clé和Clés de numéro的混合utiliser。
* - utiliser current() heure,Faites attention à l'état du pointeur interne,Assurez-vous que le pointeur pointe vers l'élément correct。
*/</span>
</span><span><span class="hljs-meta">?></span></span><span>
</span></span>