Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Penukaran nilai kunci tatasusunan PHP, persaingan kelajuan

Penukaran nilai kunci tatasusunan PHP, persaingan kelajuan

WBOY
WBOYasal
2024-05-03 12:06:011027semak imbas

Perbandingan kelajuan penukaran nilai kunci tatasusunan PHP: array_flip() ialah yang terpantas, beroperasi secara langsung pada tatasusunan, dan masa pelaksanaan ialah 0.0003 mikrosaat operator adalah kedua, dengan 0.0004 mikrosaat () adalah yang paling perlahan, yang memerlukan penciptaan Array sementara, masa pelaksanaan ialah 0.0007 mikrosaat.

PHP 数组键值转换,速度比拼谁更强

Penukaran nilai kunci tatasusunan PHP: persaingan kepantasan siapa yang lebih kuat

Dalam PHP, penukaran nilai kunci tatasusunan ialah operasi biasa, seperti menukar tatasusunan bersekutu kepada tatasusunan indeks atau menukar tatasusunan indeks kepada tatasusunan bersekutu. Terdapat beberapa cara untuk mencapai ini, tetapi prestasi mereka boleh berbeza-beza secara mendadak dalam kelajuan.

1. Fungsi array_flip()

Fungsi array_flip() boleh menukar nilai utama tatasusunan bersekutu. Sintaksnya mudah: array_flip() 函数可快速将关联数组的键值进行互换。它的语法很简单:

$array = array_flip($array);

2. array() 运算符

array() 运算符也可以用于转换键值,但其语法略有不同:

$array = array(array_flip($array));

3. array_combine() 函数

array_combine() 函数专门用于将两个数组合并成一个关联数组。它的语法如下:

$keys = array_keys($array);
$values = array_values($array);
$array = array_combine($keys, $values);

实战案例

我们创建一个关联数组,并使用不同的方法对其进行键值转换:

$array = array(
    'name' => 'John Doe',
    'age' => 30,
    'city' => 'New York'
);

echo 'Original Array:' . PHP_EOL;
print_r($array);

echo 'Using array_flip():' . PHP_EOL;
$array = array_flip($array);
print_r($array);

echo 'Using array() operator:' . PHP_EOL;
$array = array(array_flip($array));
print_r($array);

echo 'Using array_combine():' . PHP_EOL;
$keys = array_keys($array);
$values = array_values($array);
$array = array_combine($keys, $values);
print_r($array);

输出:

Original Array:
Array
(
    [name] => John Doe
    [age] => 30
    [city] => New York
)
Using array_flip():
Array
(
    [John Doe] => name
    [30] => age
    [New York] => city
)
Using array() operator:
Array
(
    [0] => Array
        (
            [John Doe] => name
            [30] => age
            [New York] => city
        )
)
Using array_combine():
Array
(
    [name] => John Doe
    [age] => 30
    [city] => New York
)

速度比较

为了比较不同方法的速度,我们可以使用 microtime() 函数来测量执行时间:

$start = microtime(true);
$array = array_flip($array);
$end = microtime(true);
$time_array_flip = $end - $start;

$start = microtime(true);
$array = array(array_flip($array));
$end = microtime(true);
$time_array_operator = $end - $start;

$start = microtime(true);
$keys = array_keys($array);
$values = array_values($array);
$array = array_combine($keys, $values);
$end = microtime(true);
$time_array_combine = $end - $start;

在多次执行测试后,我们可以看到以下结果:

方法 执行时间 (微秒)
array_flip() 0.0003
array() 运算符 0.0004
array_combine() 0.0007

结果表明,array_flip()rrreee

🎜2 operator array() 🎜🎜🎜array() operator juga boleh digunakan untuk menukar nilai kunci, tetapi sintaksnya berbeza sedikit: 🎜rrreee🎜 🎜3 . fungsi array_combine() 🎜🎜🎜array_combine() fungsi digunakan khas untuk menggabungkan dua tatasusunan ke dalam tatasusunan bersekutu. Sintaksinya adalah seperti berikut: 🎜rrreeee 🎜🎜 Kes praktikal 🎜🎜🎜 Kami membuat array bersekutu dan nilai kunci mengubahnya menggunakan kaedah yang berbeza: 🎜rrreeee🎜🎜output: 🎜🎜rrreeee🎜🎜speed comparison 🎜🎜🎜for containment Untuk kelajuan kaedah yang berbeza, kita boleh menggunakan fungsi microtime() untuk mengukur masa pelaksanaan: 🎜rrreee🎜Selepas melaksanakan ujian beberapa kali, kita boleh melihat keputusan berikut: 🎜 Kaedah Masa pelaksanaan (mikrosaat) array_flip() code><td>0.0003</td> array() operator 0.0004 array_combine() 0.0007 🎜Hasilnya menunjukkan bahawa, array_flip() menang pada kelajuan kerana ia beroperasi secara langsung pada tatasusunan, manakala kaedah lain memerlukan penciptaan tatasusunan sementara. 🎜

Atas ialah kandungan terperinci Penukaran nilai kunci tatasusunan PHP, persaingan kelajuan. 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