Dalam PHP, tatasusunan ialah struktur data yang sangat biasa digunakan. Walau bagaimanapun, apabila kami menggunakan tatasusunan, kadangkala kami menghadapi beberapa ralat. Artikel ini akan memperkenalkan beberapa ralat tatasusunan PHP biasa dan penyelesaiannya.
Secara peribadi, saya rasa ini adalah ralat tatasusunan PHP yang paling biasa. Mesej ralat ini bermakna bahawa dalam PHP kita cuba menggunakan indeks tatasusunan yang tidak wujud. Berikut ialah contoh:
$my_array = array('apple', 'banana', 'orange'); echo $my_array[3];
Kod di atas akan mengembalikan mesej ralat berikut:
Notice: Undefined offset: 3
Di mana offset
ialah nilai indeks tatasusunan indeks, iaitu subskrip. Gesaan mengatakan "offset
" ialah "tidak ditentukan", yang bermaksud bahawa nilai indeks yang ditanya di sini tidak wujud.
Penyelesaiannya ialah mencetaknya dan semak sama ada subskrip tatasusunan yang anda cuba akses adalah betul. Jika subskrip tatasusunan memang wujud, ia mungkin disebabkan oleh masalah padanan kes dalam nama kunci tatasusunan atau pembolehubah tatasusunan tidak wujud.
Ralat ini sangat hampir dengan Undefined index
, tetapi perbezaannya ialah ralat ini berlaku apabila kita menggunakan pembolehubah tidak ditentukan. Berikut ialah contoh:
echo $my_array[0];
Kod di atas akan mengembalikan mesej ralat berikut:
Notice: Undefined variable: my_array in <path_to_my_script>
Mesej ralat ini menunjukkan bahawa pembolehubah $my_array
kami tidak ditakrifkan. Oleh itu, penyelesaiannya adalah untuk memastikan pembolehubah ditakrifkan dan cuba membuka pembolehubah.
Ralat ini berlaku apabila kita cuba menggunakan rentetan sebagai tatasusunan. Berikut ialah contoh:
$my_string = 'hello world'; echo $my_string[5]['test'];
Kod di atas akan mengembalikan mesej ralat berikut:
Warning: Illegal string offset 'test' in <path_to_my_script>
Maksudnya $my_string[5]
mengembalikan aksara dan bukannya tatasusunan, Jadi anda tidak boleh menggunakan subskrip tatasusunan pada aksara. Penyelesaiannya adalah untuk menukar rentetan kepada tatasusunan, menggunakan kaedah str_split()
fungsi rentetan.
Dalam PHP7.1+, jika anda menggunakan []
untuk membuka tatasusunan bersekutu, tetapi kuncinya tidak wujud, Akan mengakibatkan mesej ralat berikut:
$my_array = ['apple' => 'good', 'banana' => 'better']; echo $my_array['no_exist'];
Kod ini akan mengembalikan mesej ralat berikut:
PHP Fatal error: Cannot use [] for reading in <path_to_my_script>
Dalam PHP7.1+, anda tidak boleh menggunakan []
untuk membuka asosiatif array, tetapi Jika kunci ini tidak wujud. Penyelesaiannya juga mudah: gunakan fungsi isset()
untuk menyemak sama ada subskrip tatasusunan yang anda mahu gunakan wujud.
Ralat ini akan berlaku jika anda cuba menggunakan jenis haram sebagai indeks tatasusunan. Contohnya, kod berikut adalah haram:
$my_array = array('apple', 'banana', 'orange'); $my_array[true] = 'good';
Kod di atas akan mengembalikan mesej ralat berikut:
Warning: Illegal offset type in <path_to_my_script>
Kod di atas adalah haram kerana true
bukan undang-undang Subskrip tatasusunan. Penyelesaiannya ialah menggunakan subskrip tatasusunan undang-undang.
Ringkasan
Yang di atas ialah ralat tatasusunan PHP biasa dan penyelesaiannya. Dalam proses membangunkan kod PHP, jangan risau apabila anda menghadapi ralat ini Anda hanya perlu mencari masalah mengikut gesaan ralat dan menghapuskan ralat.
Atas ialah kandungan terperinci Beberapa ralat tatasusunan PHP biasa dan penyelesaiannya. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!