Rumah > Soal Jawab > teks badan
Saya akhirnya dapat mengemas kini pemasangan PHP saya daripada 7.2 kepada 7.4 (bercadang untuk mengemas kini terus kepada versi semasa, tetapi melakukannya dalam langkah-langkah) dan saya mendapat ralat pelik apabila saya menjalankan skrip sedia ada:
Mesej: Cuba untuk mengakses array ofset pada nilai jenis null
Baris yang muncul hanya mengisi tatasusunan daripada set hasil mysql mudah.
for($i = 0; $resultArray[$i] = mysqli_fetch_row($result)[0]; $i++) ;
Skrip masih berjalan dengan baik, tetapi saya tidak menyukai sebarang ralat. Saya keliru mengapa perkara ini berlaku dan telah mencari selama berjam-jam tetapi tidak berjaya. Mengapa ralat ini berlaku? Adakah terdapat cara untuk melakukan operasi yang sama tanpa ralat?
P粉0769873862024-01-03 16:51:35
Mengikut dokumentasi, sebaik sahaja penghujung set keputusan dicapai, mysqli_fetch_row
将返回 null
.
Anda boleh menggunakan foreach
gelung. Saya tidak mengesyorkannya, tetapi ia adalah penyelesaian yang mungkin.
foreach ($result->fetch_all() as [0 => $resultArray[]]); // no body needed
Anda benar-benar tidak perlu menggunakan peranti pelik ini. Anda boleh menggunakan array_column() untuk operasi yang lebih mudah.
$resultArray = array_column($result->fetch_all(), 0);
P粉6814003072024-01-03 14:58:49
mysqli_fetch_row
将在某个时刻返回 null
(mengikut dokumentasi, ia sentiasa melakukan ini apabila kehabisan baris untuk diambil). Tetapi anda tidak menyemaknya sebelum cuba membaca indeks ke-0nya, jadi anda mendapat ralat.
Ramai orang menggunakan gaya ini untuk mendapatkan semula baris:
while ($row = mysqli_fetch_row($result)) { $resultArray[] = $row[0]; }
Ini akan mengelakkan masalah seperti itu. Ini juga cara anda sering melihatnya dilakukan dalam contoh dan dokumentasi.