如何處理 Null 上的 array_shift() ?
P粉300541798
P粉300541798 2024-02-25 22:27:30
0
2
433

請看一下這段程式碼:

$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粉300541798
P粉300541798

全部回覆(2)
P粉237029457

最基本的解決方案是將 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粉696146205

只需使用空數組即可:

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

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

熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!