Cuba untuk mengakses tatasusunan mengimbangi nilai jenis null dalam tatasusunan yang dihuni daripada set hasil MySQLi
P粉046387133
P粉046387133 2024-01-02 18:45:44
0
2
579

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粉046387133
P粉046387133

membalas semua(2)
P粉076987386

Mengikut dokumentasi, sebaik sahaja penghujung set keputusan dicapai, mysqli_fetch_row 将返回 null.

Anda boleh menggunakan foreachgelung. 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粉681400307

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.

Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan