Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Nilai kunci tatasusunan PHP diterbalikkan, yang mempunyai kesan yang besar pada prestasi PK

Nilai kunci tatasusunan PHP diterbalikkan, yang mempunyai kesan yang besar pada prestasi PK

WBOY
WBOYasal
2024-05-04 13:21:011003semak imbas

Kesan prestasi menggunakan array_flip() untuk membalikkan nilai kunci tatasusunan: masa pelaksanaan meningkatkan O(n^2) dengan saiz tatasusunan. Kes praktikal: Dapatkan kunci tatasusunan bersekutu mengikut nilai.

PHP 数组键值颠倒,性能影响大 PK

Pembalikan nilai kunci tatasusunan PHP: kesan ke atas prestasi dan kes praktikal

Dalam PHP, tatasusunan ialah struktur data yang biasa digunakan, kadangkala kita perlu membalikkan nilai utama tatasusunan. Ini adalah operasi biasa, tetapi kesannya terhadap prestasi sering diabaikan.

PHP menyediakan fungsi array_flip() untuk melakukan ini. Fungsi ini mengembalikan tatasusunan baharu di mana kunci tatasusunan asal diterbalikkan. array_flip() 函數來執行此操作。該函數返回一個新的數組,其中原數組的鍵值被顛倒。

讓我們比較一下在不同大小的數組上使用 array_flip() 函數的性能:

$array1 = range(0, 9999);
$array2 = range(0, 99999);
$array3 = range(0, 999999);

$time_start = microtime(true);
$flipped_array1 = array_flip($array1);
$time_end = microtime(true);
$elapsed_time1 = $time_end - $time_start;

$time_start = microtime(true);
$flipped_array2 = array_flip($array2);
$time_end = microtime(true);
$elapsed_time2 = $time_end - $time_start;

$time_start = microtime(true);
$flipped_array3 = array_flip($array3);
$time_end = microtime(true);
$elapsed_time3 = $time_end - $time_start;

echo "執行時間:\n";
echo "10,000 個元素:$elapsed_time1 秒\n";
echo "100,000 個元素:$elapsed_time2 秒\n";
echo "1,000,000 個元素:$elapsed_time3 秒\n";

從結果中,我們可以看出,使用 array_flip() 函數的執行時間會隨著數組大小的增加而增加。這是因為 array_flip() 函數在內部使用了一個巢狀迴圈,其複雜度為 O(n^2)。

實戰案例

一個使用 array_flip()

Mari kita bandingkan prestasi penggunaan fungsi array_flip() pada tatasusunan saiz yang berbeza: 🎜
$associated_array = [
    "red" => "#FF0000",
    "blue" => "#0000FF",
    "green" => "#00FF00",
];

$flipped_array = array_flip($associated_array);

echo $flipped_array["#00FF00"]; // 輸出:green
🎜Daripada keputusan, kita dapat melihat bahawa menggunakan array_flip() Masa pelaksanaan fungsi bertambah apabila saiz tatasusunan bertambah. Ini kerana fungsi array_flip() menggunakan gelung bersarang secara dalaman, yang mempunyai kerumitan O(n^2). 🎜🎜🎜Kes praktikal🎜🎜🎜Satu kes praktikal menggunakan fungsi array_flip() adalah untuk menterbalikkan nilai kekunci​​​ bagi tatasusunan bersekutu, supaya kunci itu boleh diperoleh mengikut nilai. Contohnya: 🎜rrreee

Atas ialah kandungan terperinci Nilai kunci tatasusunan PHP diterbalikkan, yang mempunyai kesan yang besar pada prestasi PK. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn