Valeurs clés du tableau d'échange PHP : comparaison des méthodes et optimisation des performances

PHPz
Libérer: 2024-05-04 15:06:01
original
552 Les gens l'ont consulté

Lors de l'échange de valeurs de clés de tableau en PHP, les performances de la méthode varient en fonction de la taille du tableau. Pour les tableaux plus petits, array_flip() est plus rapide, tandis que pour les tableaux plus grands, l'utilisation d'unset() et de la syntaxe [] ou d'une boucle foreach est plus efficace. Les conseils d'optimisation incluent le choix du bon algorithme, l'utilisation de références pour éviter les copies et l'utilisation d'unset() pour réduire les allocations de mémoire.

PHP 交换数组键值:方法比较和性能优化

Valeurs de clés de tableau d'échange PHP : comparaison de méthodes et optimisation des performances

Lorsque vous devez échanger des clés et des valeurs dans des tableaux PHP, vous avez le choix entre plusieurs méthodes. Cet article comparera les performances de ces méthodes et fournira quelques conseils d’optimisation pour améliorer l’efficacité.

Method

array_flip()

array_flip() La fonction échange directement les clés et les valeurs du tableau. L'utilisation est la suivante : array_flip() 函数直接交换数组的键和值。用法如下:

$flipped_array = array_flip($array);
Copier après la connexion

混合使用 unset() 和 [] 语法

可以使用 unset() 函数删除旧键,然后使用带有方括号的赋值语法添加新键。

unset($array['old_key']);
$array['new_key'] = $array['old_value'];
Copier après la connexion

foreach() 循环

可以遍历数组,使用临时变量来交换键和值。

foreach ($array as $key => $value) {
  $temp = $key;
  $key = $value;
  $value = $temp;
}
Copier après la connexion

性能比较

对于较小的数组(< 100 项),array_flip() 可能比其他方法更快。然而,对于较大的数组,混合使用 unset()[] 语法或 foreach 循环往往更有效。

$array_size = 100000;
$array = range(1, $array_size);

$time_array_flip = microtime(true);
$flipped_array_array_flip = array_flip($array);
$time_array_flip = microtime(true) - $time_array_flip;

$time_unset_array = microtime(true);
foreach ($array as $key =&amp;gt; $value) {
  unset($array[$key]);
  $array[$value] = $key;
}
$time_unset_array = microtime(true) - $time_unset_array;

$time_foreach = microtime(true);
foreach ($array as $key =&amp;gt; &amp;amp;$value) {
  $temp = $key;
  $key = $value;
  $value = $temp;
}
unset($value); // PHP 8 之前的版本需要手动释放引用
$time_foreach = microtime(true) - $time_foreach;

printf(&amp;quot;array_flip(): %.6fs\n&amp;quot;, $time_array_flip);
printf(&amp;quot;unset(): %.6fs\n&amp;quot;, $time_unset_array);
printf(&amp;quot;foreach(): %.6fs\n&amp;quot;, $time_foreach);
Copier après la connexion

结果:

  • 对于较小的数组(100 项),array_flip() 最快。
  • 对于较大的数组(超过 10,000 项),unset()[] 语法或 foreach 循环更有效。

优化技巧

  • 选择正确的算法:根据数组的大小,选择性能最好的算法。
  • 避免不必要的复制:使用引用(&amp;)可以避免在循环中复制数据。
  • 减少内存分配:使用 unset()rrreee
Mélanger la syntaxe unset() et [] 🎜🎜🎜Vous pouvez utiliser la fonction unset() pour supprimer les anciennes clés, puis utiliser la syntaxe d'affectation avec des crochets pour ajouter nouvelles clés. 🎜rrreee🎜🎜foreach() loop🎜🎜🎜 peut parcourir le tableau, en utilisant des variables temporaires pour échanger des clés et des valeurs. 🎜rrreee🎜🎜Comparaison des performances🎜🎜🎜Pour les tableaux plus petits (< 100 éléments), array_flip() peut être plus rapide que les autres méthodes. Cependant, pour les tableaux plus grands, il est souvent plus efficace d'utiliser un mélange de syntaxe unset() et [] ou une boucle foreach. 🎜rrreee🎜🎜Résultats : 🎜🎜
  • Pour les tableaux plus petits (100 éléments), array_flip() est le plus rapide. 🎜
  • Pour les tableaux plus grands (plus de 10 000 éléments), les syntaxes unset() et [] ou la boucle foreach sont plus efficaces . 🎜🎜🎜🎜Conseils d'optimisation🎜🎜
    • 🎜Choisissez le bon algorithme : 🎜Choisissez l'algorithme avec les meilleures performances en fonction de la taille du tableau. 🎜
    • 🎜Évitez les copies inutiles : 🎜Utilisez des références (&amp;) pour éviter de copier des données en boucles. 🎜
    • 🎜Réduisez l'allocation de mémoire : 🎜Utilisez unset() pour réduire le besoin de garbage collection. 🎜🎜

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal