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