Rumah  >  Soal Jawab  >  teks badan

Bagaimana untuk mengendalikan array_shift() pada Null ?

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粉300541798P粉300541798260 hari yang lalu436

membalas semua(2)saya akan balas

  • P粉237029457

    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 $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)) {
    

    balas
    0
  • P粉696146205

    P粉6961462052024-02-26 18:54:55

    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.

    balas
    0
  • Batalbalas