Apabila menukar nilai kunci tatasusunan dalam PHP, prestasi kaedah berbeza mengikut saiz tatasusunan. Untuk tatasusunan yang lebih kecil, array_flip() adalah lebih pantas, manakala untuk tatasusunan yang lebih besar, menggunakan unset() dan sintaks [] atau gelung foreach adalah lebih cekap. Petua pengoptimuman termasuk memilih algoritma yang betul, menggunakan rujukan untuk mengelakkan salinan dan menggunakan unset() untuk mengurangkan peruntukan memori.
Nilai kunci tatasusunan pertukaran PHP: perbandingan kaedah dan pengoptimuman prestasi
Apabila anda perlu menukar kunci dan nilai dalam tatasusunan PHP, terdapat beberapa kaedah untuk dipilih. Artikel ini akan membandingkan prestasi kaedah ini dan memberikan beberapa petua pengoptimuman untuk meningkatkan kecekapan.
Kaedah
array_flip()
array_flip()
函数直接交换数组的键和值。用法如下:
$flipped_array = array_flip($array);
混合使用 unset() 和 [] 语法
可以使用 unset()
函数删除旧键,然后使用带有方括号的赋值语法添加新键。
unset($array['old_key']); $array['new_key'] = $array['old_value'];
foreach() 循环
可以遍历数组,使用临时变量来交换键和值。
foreach ($array as $key => $value) { $temp = $key; $key = $value; $value = $temp; }
性能比较
对于较小的数组(< 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 => $value) { unset($array[$key]); $array[$value] = $key; } $time_unset_array = microtime(true) - $time_unset_array; $time_foreach = microtime(true); foreach ($array as $key => &$value) { $temp = $key; $key = $value; $value = $temp; } unset($value); // PHP 8 之前的版本需要手动释放引用 $time_foreach = microtime(true) - $time_foreach; printf("array_flip(): %.6fs\n", $time_array_flip); printf("unset(): %.6fs\n", $time_unset_array); printf("foreach(): %.6fs\n", $time_foreach);
结果:
array_flip()
最快。unset()
和 []
语法或 foreach
循环更有效。优化技巧
&
)可以避免在循环中复制数据。unset()
rrreeeunset()
untuk memadam kekunci lama, dan kemudian gunakan sintaks tugasan dengan kurungan segi empat sama untuk menambah kunci baru. 🎜rrreee🎜🎜foreach() gelung🎜🎜🎜 boleh lelaran ke atas tatasusunan, menggunakan pembolehubah sementara untuk menukar kunci dan nilai. 🎜rrreee🎜🎜Perbandingan prestasi🎜🎜🎜Untuk tatasusunan yang lebih kecil (< 100 item), array_flip()
mungkin lebih pantas daripada kaedah lain. Walau bagaimanapun, untuk tatasusunan yang lebih besar, selalunya lebih cekap untuk menggunakan campuran sintaks unset()
dan []
atau gelung foreach
. 🎜rrreee🎜🎜Keputusan: 🎜🎜array_flip()
adalah terpantas. 🎜unset()
dan []
atau gelung foreach
adalah lebih cekap . 🎜🎜🎜🎜Petua pengoptimuman🎜🎜unset()
untuk mengurangkan keperluan kutipan sampah. 🎜🎜Atas ialah kandungan terperinci Nilai kunci tatasusunan pertukaran PHP: perbandingan kaedah dan pengoptimuman prestasi. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!