Rumah > pembangunan bahagian belakang > masalah PHP > Tatasusunan tidak bertindih dalam gelung php

Tatasusunan tidak bertindih dalam gelung php

王林
Lepaskan: 2023-05-19 22:22:09
asal
553 orang telah melayarinya

Array ialah jenis data yang berkuasa dan penting dalam PHP. Apabila kita perlu mengendalikan tatasusunan dalam satu gelung, kadangkala kami mendapati bahawa nilai tatasusunan ditindih, yang boleh membawa kepada keputusan yang salah. Dalam artikel ini, kita akan membincangkan cara untuk mengelakkan isu tindanan tatasusunan dalam gelung PHP.

Pertama, mari kita fahami konsep asas tatasusunan dalam PHP. Dalam PHP, tatasusunan ialah koleksi tersusun di mana setiap elemen mempunyai kunci unik, yang boleh menjadi nombor atau rentetan. Kita boleh mentakrifkan tatasusunan dengan cara berikut:

$myArray = array("apple", "banana", "orange");
Salin selepas log masuk

Apabila beroperasi pada tatasusunan dalam gelung, kami biasanya menggunakan gelung for atau gelung foreach untuk melelaran ke atas elemen dalam tatasusunan. Berikut ialah contoh menggunakan gelung for untuk melintasi tatasusunan:

$myArray = array("apple", "banana", "orange");

for ($i = 0; $i < count($myArray); $i++) {
    echo $myArray[$i] . ", ";
}
Salin selepas log masuk

Hasil output ialah:

apple, banana, orange, 
Salin selepas log masuk

Dalam kod di atas, kami menggunakan fungsi count() untuk mendapatkan nombor elemen dalam tatasusunan, dan kemudian gunakan untuk Gelung melalui setiap elemen dalam tatasusunan dan gunakan pernyataan gema untuk mengeluarkan nilai setiap elemen.

Sekarang, katakan kita melakukan beberapa operasi pada tatasusunan dalam gelung dan mendapati keputusannya tidak betul, mungkin kerana nilai tatasusunan disusun. Sebagai contoh, kami ingin mengira bilangan aksara semua rentetan dalam tatasusunan dan menyimpan hasil dalam tatasusunan lain:

$myArray = array("apple", "banana", "orange");
$charCountArray = array();

for ($i = 0; $i < count($myArray); $i++) {
    $charCountArray[$i] = strlen($myArray[$i]);
}

print_r($charCountArray);
Salin selepas log masuk
Salin selepas log masuk

Hasil output ialah:

Array
(
    [0] => 5
    [1] => 6
    [2] => 6
)
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk

Dalam kod di atas, kami gunakan fungsi strlen () untuk mendapatkan bilangan aksara dalam setiap rentetan dan simpan hasilnya dalam tatasusunan $charCountArray. Walau bagaimanapun, kami mendapati bahawa nilai dalam tatasusunan telah ditindih, dan nilai tatasusunan meningkat selepas setiap gelung, mengakibatkan keputusan akhir yang salah. Ini kerana dalam PHP, kaedah penugasan tatasusunan adalah "laluan rujukan", iaitu, apabila kami beroperasi pada tatasusunan, kami sebenarnya beroperasi pada rujukan tatasusunan asal, bukannya pada salinan tatasusunan. .

Untuk mengelakkan masalah ini, kita boleh menggunakan dua kaedah berikut:

Kaedah 1: Gunakan nama kunci untuk menyimpan hasil

Kita boleh menggunakan nama kunci tatasusunan dalam gelung untuk menyimpan hasil supaya ia tidak menyebabkan nilai tatasusunan bertindih. Berikut ialah kod sampel:

$myArray = array("apple", "banana", "orange");
$charCountArray = array();

for ($i = 0; $i < count($myArray); $i++) {
    $charCountArray[$i] = strlen($myArray[$i]);
}

print_r($charCountArray);
Salin selepas log masuk
Salin selepas log masuk

Hasil output ialah:

Array
(
    [0] => 5
    [1] => 6
    [2] => 6
)
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk

Dalam kod di atas, kami menggunakan nama kunci $i tatasusunan untuk menyimpan hasil daripada menggunakan subskrip daripada tatasusunan. Dengan cara ini, setiap elemen mempunyai nama kunci yang unik dan tidak menyebabkan nilai tatasusunan bertindih.

Kaedah 2: Tetapkan semula tatasusunan sebelum menggelung

Kita boleh menetapkan semula tatasusunan sebelum menggelung untuk mengelakkan pertindihan nilai tatasusunan. Berikut ialah kod sampel:

$myArray = array("apple", "banana", "orange");
$charCountArray = array();

// 重置数组
$charCountArray = array_pad($charCountArray, count($myArray), 0);

for ($i = 0; $i < count($myArray); $i++) {
    $charCountArray[$i] = strlen($myArray[$i]);
}

print_r($charCountArray);
Salin selepas log masuk

Hasil output adalah sama dengan kaedah satu:

Array
(
    [0] => 5
    [1] => 6
    [2] => 6
)
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk

Dalam kod di atas, kami menggunakan fungsi array_pad() untuk menetapkan semula tatasusunan. Fungsi array_pad() melapik tatasusunan kepada panjang yang ditentukan dengan nilai yang ditentukan. Dalam kod ini, kami tidak menentukan nilai untuk padding, yang lalai kepada 0, jadi semua elemen dalam tatasusunan akan dipadatkan dengan 0.

Ringkasan

Dalam gelung PHP, terdapat dua cara untuk mengelakkan masalah tindanan tatasusunan: gunakan nama kunci untuk menyimpan hasil atau menetapkan semula tatasusunan sebelum menggelung. Mana-mana kaedah yang anda gunakan, anda boleh mengelakkan keputusan yang salah disebabkan superposisi tatasusunan. Memahami dan menguasai kaedah ini boleh menjadikan kita lebih cekap dan tepat dalam pembangunan PHP.

Atas ialah kandungan terperinci Tatasusunan tidak bertindih dalam gelung php. 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