84669 人が学習中
152542 人が学習中
20005 人が学習中
5487 人が学習中
7821 人が学習中
359900 人が学習中
3350 人が学習中
180660 人が学習中
48569 人が学習中
18603 人が学習中
40936 人が学習中
1549 人が学習中
1183 人が学習中
32909 人が学習中
このコードを見てください:
PHP 7.2 を使用していたときは正常に動作していましたが、8.1 にアップグレードすると次のエラーが発生します:
7.2
8.1
PHP 致命的エラー: キャッチされない TypeError: array_shift(): 引数 #1 ($array) は配列型である必要があります。/path/to/qanda.php に null が指定されています:469
それを修正する方法はありますか?
最も基本的な解決策は、型の要件に一致するように null 値を空の配列に置き換えることです。
null
$newvar で null 合体演算子 を使用することもできます:
で
array_shift の戻り値を使用してループを作成する理由がわかりません。ループ本体は 1 回だけ実行されます。 おそらく条件式を使用するだけでしょうか?
の戻り値を使用してループを作成する理由がわかりません。ループ本体は 1 回だけ実行されます。 おそらく条件式を使用するだけでしょうか?
空の配列を使用してください:
$end = isset($newvar) ? array($newvar) : [];
array_shift は最初の呼び出しで入力として null 空の配列を返すため、ループは実行されません。
最も基本的な解決策は、型の要件に一致するように
$end = isset($newvar) ? array($newvar) : []; while($ends = array_shift($end)){ 配列を作成し、null
値を空の配列に置き換えることです。$newvar
$end = [$newvar ?? null]; while($ends = array_shift($end)){ しかし、単一の値を持つ配列を作成し、で
null 合体演算子 を使用することもできます:array_shift
if (isset($newvar)) {の戻り値を使用してループを作成する理由がわかりません。ループ本体は 1 回だけ実行されます。 おそらく条件式を使用するだけでしょうか?
空の配列を使用してください:
array_shift は最初の呼び出しで入力として
null
空の配列を返すため、ループは実行されません。