Rumah > pembangunan bahagian belakang > masalah PHP > Mari kita bincangkan tentang beberapa kaedah traversal tatasusunan PHP yang berbeza

Mari kita bincangkan tentang beberapa kaedah traversal tatasusunan PHP yang berbeza

PHPz
Lepaskan: 2023-04-27 09:38:56
asal
509 orang telah melayarinya

Dengan pembangunan berterusan dan aplikasi teknologi Internet, pembangunan Web telah menjadi semakin popular dan penting. Sebagai bahasa pembangunan web yang popular, PHP digunakan secara meluas untuk membina laman web dinamik dan aplikasi web.

Dalam pembangunan PHP, tatasusunan ialah struktur data asas yang sering digunakan untuk menyimpan dan mengendalikan sejumlah besar data. Traversal tatasusunan adalah salah satu operasi yang paling biasa dalam pembangunan. Artikel ini akan memperkenalkan beberapa kaedah traversal tatasusunan PHP yang berbeza dan membandingkan kadarnya.

  1. untuk traversal gelung

Gelung for ialah salah satu kaedah traversal yang paling asas dan biasa. Ia merentasi keseluruhan tatasusunan dengan menambah atau mengurangkan pembolehubah gelung, dan kemudian mendapat nilai setiap elemen melalui subskrip tatasusunan.

Berikut ialah contoh yang menunjukkan cara menggunakan gelung for untuk melintasi tatasusunan:

$array = array('A','B','C','D','E','F','G');
$array_length = count($array);

for ($i = 0; $i < $array_length; $i++) {
    echo $array[$i];
}
Salin selepas log masuk

Menggunakan gelung for untuk melintasi tatasusunan ialah salah satu kaedah yang paling biasa dan paling mudah. Walau bagaimanapun, ia agak perlahan, terutamanya apabila berurusan dengan tatasusunan yang besar.

  1. laluan gelung foreach

Gelung foreach ialah cara traversal tatasusunan yang lebih elegan Ia boleh melintasi keseluruhan tatasusunan dan mengakses terus setiap elemen dalam gelung .

Berikut ialah contoh yang menunjukkan cara menggunakan gelung foreach untuk merentasi tatasusunan:

$array = array(&#39;A&#39;,&#39;B&#39;,&#39;C&#39;,&#39;D&#39;,&#39;E&#39;,&#39;F&#39;,&#39;G&#39;);

foreach ($array as $value) {
    echo $value;
}
Salin selepas log masuk

Menggunakan gelung foreach untuk melintasi tatasusunan adalah lebih elegan dan ringkas daripada menggunakan gelung for. Selain itu, ia biasanya lebih pantas daripada gelung for, terutamanya apabila berurusan dengan tatasusunan yang besar.

  1. array_walk function traversal

array_walk function ialah fungsi yang disediakan oleh PHP khusus untuk merentasi tatasusunan. Ia menerima dua parameter: tatasusunan untuk diulang dan fungsi panggil balik. Nilai elemen dalam tatasusunan boleh diubah suai dalam fungsi panggil balik.

Berikut ialah contoh yang menunjukkan cara menggunakan fungsi array_walk untuk melintasi tatasusunan:

$array = array(&#39;A&#39;,&#39;B&#39;,&#39;C&#39;,&#39;D&#39;,&#39;E&#39;,&#39;F&#39;,&#39;G&#39;);

function print_item($value, $key) {
    echo $value;
}

array_walk($array, &#39;print_item&#39;);
Salin selepas log masuk

Menggunakan fungsi array_walk untuk melintasi tatasusunan boleh menjadikan kod lebih cekap dan ringkas. Walau bagaimanapun, ia agak perlahan, dan reka bentuk fungsi panggil balik mungkin menyebabkan kod kurang boleh dibaca.

Membandingkan kelajuan kaedah yang berbeza

Untuk membandingkan kelajuan kaedah traversal tatasusunan PHP yang berbeza ini, kita boleh menggunakan fungsi masa mikro PHP untuk menguji masa pelaksanaannya. Fungsi masa mikro mengembalikan cap masa Unix semasa dan mikrosaat.

Berikut ialah contoh yang menunjukkan cara menguji kadar dan masa pelaksanaan kaedah yang berbeza:

$loop = 100000;
$array = array_fill(0, 1000, &#39;A&#39;);

// for loop
$start_time = microtime(true);
for ($i = 0; $i < $loop; $i++) {
    for ($j = 0; $j < count($array); $j++) {
        $value = $array[$j];
    }
}
$end_time = microtime(true);
$for_time = $end_time - $start_time;

// foreach
$start_time = microtime(true);
for ($i = 0; $i < $loop; $i++) {
    foreach ($array as $value) {
        $value = $value;
    }
}
$end_time = microtime(true);
$foreach_time = $end_time - $start_time;

// array_walk
function print_item($value, $key) {
    $value = $value;
}

$start_time = microtime(true);
for ($i = 0; $i < $loop; $i++) {
    array_walk($array, &#39;print_item&#39;);
}
$end_time = microtime(true);
$array_walk_time = $end_time - $start_time;

echo "For loop: " . $for_time . "<br>";
echo "Foreach: " . $foreach_time . "<br>";
echo "Array_walk: " . $array_walk_time . "<br>";
Salin selepas log masuk

Dalam ujian ini kami mengisi tatasusunan dengan 1000 elemen dan menguji setiap kaedah Ulang 100,000 kali. Kemudian, kami mengira masa pelaksanaan setiap kaedah menggunakan fungsi masa mikro.

Keputusan ujian adalah seperti berikut:

For loop: 0.46466302871704
Foreach: 0.27876091003418
Array_walk: 0.66399812698364
Salin selepas log masuk

Daripada keputusan ujian, menggunakan gelung foreach untuk melintasi tatasusunan adalah kaedah terpantas, iaitu 40% dan 138 kali lebih pantas daripada menggunakan for fungsi gelung dan array_walk untuk melintasi tatasusunan masing-masing. Oleh itu, dalam pembangunan PHP, menggunakan gelung foreach untuk melintasi tatasusunan adalah pilihan terbaik.

Ringkasan

Dalam pembangunan PHP, operasi traversal tatasusunan adalah sangat biasa dan penting. Artikel ini memperkenalkan tiga kaedah traversal tatasusunan yang berbeza dalam PHP dan membandingkan kadarnya. Keputusan ujian menunjukkan bahawa menggunakan gelung foreach untuk melintasi tatasusunan adalah kaedah terpantas, iaitu masing-masing 40% dan 138% lebih pantas daripada fungsi gelung for dan array_walk. Oleh itu, dalam pembangunan sebenar, kita harus menggunakan gelung foreach untuk melintasi tatasusunan sebanyak mungkin untuk meningkatkan kecekapan pelaksanaan kod.

Atas ialah kandungan terperinci Mari kita bincangkan tentang beberapa kaedah traversal tatasusunan PHP yang berbeza. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan