Rumah > Soal Jawab > teks badan
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?
P粉2370294572024-02-26 19:37:09
Penyelesaian paling asas ialah menggantikan nilai null
dengan tatasusunan kosong untuk mematuhi keperluan jenis:
$end = isset($newvar) ? array($newvar) : []; while($ends = array_shift($end)){
Anda juga boleh membuat tatasusunan dan menggunakan $newvar
pengendali penggabungan null pada :
$end = [$newvar ?? null]; while($ends = array_shift($end)){
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?
if (isset($newvar)) {
P粉6961462052024-02-26 18:54:55
Hanya gunakan tatasusunan kosong:
$end = isset($newvar) ? array($newvar) : [];
array_shift akan mengembalikan tatasusunan null
kosong sebagai input pada panggilan pertama, jadi gelung tidak akan dilaksanakan.