首頁  >  問答  >  主體

如何處理 Null 上的 array_shift() ?

請看一下這段程式碼:

$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粉300541798P粉300541798260 天前438

全部回覆(2)我來回復

  • P粉237029457

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

    回覆
    0
  • P粉696146205

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

    只需使用空數組即可:

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

    array_shift 將在第一次呼叫時傳回 null空數組作為輸入,因此循環不會執行。

    回覆
    0
  • 取消回覆