Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Pertukaran nilai kunci tatasusunan PHP: Algoritma dan analisis prestasi pertukaran nilai kunci berjujukan

Pertukaran nilai kunci tatasusunan PHP: Algoritma dan analisis prestasi pertukaran nilai kunci berjujukan

WBOY
WBOYasal
2024-05-03 13:15:01787semak imbas

Pertukaran nilai kunci tatasusunan PHP mempunyai dua algoritma: pertukaran nilai kunci mudah dan pertukaran nilai kunci berjujukan. Yang pertama merentasi tatasusunan dan menyimpan nilai utama ke dalam tatasusunan baharu dalam surat-menyurat satu-dengan-satu, manakala yang kedua menggunakan fungsi array_values() dan array_keys() untuk menukar nilai-nilai utama mengikut tertib. Ujian prestasi menunjukkan bahawa algoritma swap nilai kunci berjujukan adalah jauh lebih pantas daripada algoritma swap nilai kunci mudah apabila tatasusunan adalah besar.

PHP 数组键值互换:按序键值互换的算法与性能分析

Pertukaran Nilai Utama Tatasusunan PHP: Algoritma dan Analisis Prestasi Pertukaran Nilai Kunci Berjujukan

Dalam PHP, tatasusunan ialah koleksi tertib yang menyimpan dan mengurus data. Kadangkala, kita perlu menukar nilai utama tatasusunan, yang boleh dicapai dengan algoritma berikut:

Algoritma pertukaran nilai kunci mudah

function swapArrayKeysValues(array $array): array
{
    $flippedArray = [];
    foreach ($array as $key => $value) {
        $flippedArray[$value] = $key;
    }
    return $flippedArray;
}

Algoritma pertukaran nilai kunci berurutan

Untuk memasukkan susunan nilai kunci tatasusunan Untuk menukar nilai, kami boleh menggunakan algoritma berikut:

function orderedSwapArrayKeysValues(array $array): array
{
    $values = array_values($array);
    $keys = array_keys($array);
    return array_combine($values, $keys);
}

Analisis Prestasi

Untuk membandingkan prestasi kedua-dua algoritma, kami menanda aras tatasusunan 10,000 elemen:

$array = range(1, 10000);

// 简单键值互换
$start = microtime(true);
$result = swapArrayKeysValues($array);
$end = microtime(true);
echo "简单键值互换耗时:" . ($end - $start) . " 秒\n";

// 按序键值互换
$start = microtime(true);
$result = orderedSwapArrayKeysValues($array);
$end = microtime(true);
echo "按序键值互换耗时:" . ($end - $start) . " 秒\n";

Output:

Analisis Prestasi

algoritma swap nilai kunci berjujukan adalah jauh lebih pantas daripada algoritma swap nilai kunci yang mudah.

Atas ialah kandungan terperinci Pertukaran nilai kunci tatasusunan PHP: Algoritma dan analisis prestasi pertukaran nilai kunci berjujukan. 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