Dalam pengaturcaraan PHP, tatasusunan ialah struktur data yang sangat biasa yang boleh menyimpan berbilang nilai dengan mudah, dan nilai ini boleh diambil dan diubah suai menggunakan subskrip. Tetapi apakah yang berlaku apabila tatasusunan diakses menggunakan subskrip yang tidak wujud? Artikel ini akan membincangkan tingkah laku dan kaedah pemprosesan apabila subskrip tatasusunan PHP tidak wujud.
1. Prestasi subskrip tatasusunan PHP yang tidak wujud
Apabila program cuba mengakses tatasusunan menggunakan subskrip yang tidak wujud, PHP akan menunjukkan gelagat yang berbeza mengikut situasi yang berbeza. Secara khusus, terdapat tiga situasi berikut:
$arr = array("a","b","c"); echo $arr[3]; // 不会报错,但是没有输出任何值
$arr = array("a","b","c"); $arr[3] = "d"; // 自动创建下标3,并赋值为"d" print_r($arr); // 输出Array([0]=>a [1]=>b [2]=>c [3]=>d)
$arr = array("a","b","c"); var_dump(isset($arr[3])); // 输出bool(false) var_dump(empty($arr[3])); // 输出bool(true)
2. Cara mengendalikan subskrip tatasusunan PHP yang tidak wujud
Apabila subskrip yang tidak wujud digunakan untuk mengakses tatasusunan dalam atur cara, mengikut urutan untuk mengelakkan tingkah laku yang tidak dijangka, Anda boleh menggunakan kaedah berikut:
$arr = array("a","b","c"); if(isset($arr[3])) { echo $arr[3]; // 不会执行 } if(array_key_exists(3, $arr)) { echo $arr[3]; // 不会执行 }
$arr = array("a","b","c"); try { $value = $arr[3]; } catch(Exception $e) { echo 'Caught exception: '.$e->getMessage(); // 输出 Caught exception: Undefined offset: 3 }
Dalam contoh di atas, apabila tatasusunan diakses menggunakan subskrip yang tidak wujud, kod akan membuang pengecualian dan kemudian mengendalikan pengecualian melalui blok cuba-tangkap.
$arr = array("a","b","c"); if(count($arr) > 3) { echo $arr[3]; // 不会执行 }
Kelemahan kaedah ini ialah jika panjang tatasusunan adalah besar, keseluruhan tatasusunan perlu dilalui setiap kali, yang akan memakan banyak masa dan sumber.
Ringkasnya, apabila mengakses tatasusunan menggunakan subskrip yang tidak wujud, PHP akan menunjukkan gelagat berbeza mengikut situasi yang berbeza Anda boleh menggunakan fungsi isset() atau kosong(), pengendalian pengecualian dan menyemak tatasusunan panjang untuk mengelakkan tingkah laku yang tidak dijangka. Apabila menggunakan tatasusunan, pastikan anda memberi perhatian kepada julat subskrip untuk mengelakkan ralat yang tidak perlu.
Atas ialah kandungan terperinci Bincangkan tingkah laku dan kaedah pemprosesan apabila subskrip tatasusunan PHP tidak wujud. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!