ホームページ  >  に質問  >  本文

Null で array_shift() を処理するにはどうすればよいですか?

このコードを見てください:

リーリー

PHP 7.2 を使用していたときは正常に動作していましたが、8.1 にアップグレードすると次のエラーが発生します:

PHP 致命的エラー: キャッチされない TypeError: array_shift(): 引数 #1 ($array) は配列型である必要があります。/path/to/qanda.php に null が指定されています:469

それを修正する方法はありますか?

P粉300541798P粉300541798260日前437

全員に返信(2)返信します

  • P粉237029457

    P粉2370294572024-02-26 19:37:09

    最も基本的な解決策は、型の要件に一致するように null 値を空の配列に置き換えることです。

    $end = isset($newvar) ? array($newvar) : []; while($ends = array_shift($end)){
     配列を作成し、

    $newvar null 合体演算子 を使用することもできます:

    $end = [$newvar ?? null]; while($ends = array_shift($end)){
    しかし、単一の値を持つ配列を作成し、

    array_shift の戻り値を使用してループを作成する理由がわかりません。ループ本体は 1 回だけ実行されます。 おそらく条件式を使用するだけでしょうか?

    if (isset($newvar)) {

    返事
    0
  • P粉696146205

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

    空の配列を使用してください:

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

    array_shift は最初の呼び出しで入力として null 空の配列を返すため、ループは実行されません。

    返事
    0
  • キャンセル返事