Sila lihat kod ini:
$end = isset($newvar) ? array($newvar) : null; while($ends = array_shift($end)){ ...
Apabila saya menggunakan PHP 7.2
时运行良好,但升级到 8.1
ia melemparkan:
PHP Fatal Ralat: Uncaught TypeError: array_shift(): Parameter #1 ($array) mestilah daripada tatasusunan jenis, diberi null dalam /path/to/qanda.php:469
Ada idea bagaimana untuk membetulkannya?
Penyelesaian paling asas ialah menggantikan nilai
null
dengan tatasusunan kosong untuk mematuhi keperluan jenis:Anda juga boleh membuat tatasusunan dan menggunakan
$newvar
pengendali penggabungan null pada :Tetapi saya tidak faham mengapa anda akan mencipta tatasusunan dengan satu nilai dan kemudian mencipta gelung menggunakan nilai pulangan
array_shift
. Badan gelung hanya akan berjalan sekali. Mungkin hanya menggunakan bersyarat?Hanya gunakan tatasusunan kosong:
array_shift akan mengembalikan tatasusunan
null
kosong sebagai input pada panggilan pertama, jadi gelung tidak akan dilaksanakan.