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?
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.
The most basic solution would be to replace the null value with an empty array to comply with the type requirements:
$end = isset($newvar) ? array($newvar) : [];
while($ends = array_shift($end)){
You could also create the array and use the null coalescing operator on $newvar:
$end = [$newvar ?? null];
while($ends = array_shift($end)){
But I don't understand why you would create an array with a single value and then create a loop using array_shift's return value. The loop body will only run once.
Maybe just use a condition ?
if (isset($newvar)) {
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With