84669 人學習
152542 人學習
20005 人學習
5487 人學習
7821 人學習
359900 人學習
3350 人學習
180660 人學習
48569 人學習
18603 人學習
40936 人學習
1549 人學習
1183 人學習
32909 人學習
請看一下這段程式碼:
$end = isset($newvar) ? array($newvar) : null; while($ends = array_shift($end)){ ...
當我使用 PHP 7.2 時運行良好,但升級到 8.1 後,它會拋出:
7.2
8.1
PHP 致命錯誤:未捕獲類型錯誤:array_shift():參數 #1 ($array) 必須是數組類型,在 /path/to/qanda.php:469 中給出 null
知道如何修復它嗎?
最基本的解決方案是將 null 值替換為空數組,以符合類型要求:
null
$end = isset($newvar) ? array($newvar) : []; while($ends = array_shift($end)){
您也可以建立陣列並在 $newvar 上使用空合併運算子:
$newvar
$end = [$newvar ?? null]; while($ends = array_shift($end)){
但我不明白為什麼您要建立一個具有單一值的數組,然後使用 array_shift 的返回值建立一個循環。循環體只會運行一次。 也許只是使用一個條件?
array_shift
if (isset($newvar)) {
只需使用空數組即可:
$end = isset($newvar) ? array($newvar) : [];
array_shift 將在第一次呼叫時傳回 null空數組作為輸入,因此循環不會執行。
最基本的解決方案是將
null
值替換為空數組,以符合類型要求:您也可以建立陣列並在
$newvar
上使用空合併運算子:但我不明白為什麼您要建立一個具有單一值的數組,然後使用
array_shift
的返回值建立一個循環。循環體只會運行一次。 也許只是使用一個條件?只需使用空數組即可:
array_shift 將在第一次呼叫時傳回
null
空數組作為輸入,因此循環不會執行。