Bagaimana untuk mengendalikan array_shift() pada Null ?
P粉300541798
P粉300541798 2024-02-25 22:27:30
0
2
400

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

membalas semua(2)
P粉237029457

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 $newvarpengendali 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粉696146205

Hanya gunakan tatasusunan kosong:

$end = isset($newvar) ? array($newvar) : [];

array_shift akan mengembalikan tatasusunan nullkosong sebagai input pada panggilan pertama, jadi gelung tidak akan dilaksanakan.

Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!