phpfatal-errorphp-8

How to handle array_shift() on Null?


Please take a look at this code:

$end = isset($newvar) ? array($newvar) : null;
while($ends = array_shift($end)){
  ...

It was working well when I was using PHP 7.2, but after upgrading to 8.1, it throws:

PHP Fatal error: Uncaught TypeError: array_shift(): Argument #1 ($array) must be of type array, null given in /path/to/qanda.php:469

Any idea how can I fix it?


Solution

  • Just use an empty array instead:

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

    array_shift will return null on the first call with an empty array as input, so the loop will not execute.