LoginSignup
1

More than 3 years have passed since last update.

PHP unset関数を実行したら構文エラーが出た

Posted at

目的

  • PHPでunset関数を用いて連想配列の要素の削除する処理を実装中に「syntax error, unexpected 'unset’」というエラーに悩まされたので原因と正しい記載方法をまとめる

前提情報

  • 下記サービスで検証した。
  • 連想配列arrayを定義する。
  • キー「str3」の値を配列から削除したい。

エラーが出たコード

  • 下記のようなコードを記載して実行したところ「syntax error, unexpected 'unset’」のエラーが表示された。

    <?php
    // 連想配列の定義
    $array = [
        'str1' => 'a',
        'str2' => 'b',
        'str3' => 'c'
    ];
    
    // キーを指定した値の削除
    $array = unset($array['str3']);
    
    // 確認
    var_dump($array);
    
    ?>
    
  • 「キーを指定した値の削除」部分ではunset関数で削除が終わった配列を再度$arrayに格納している。

エラー

  • 下記のエラーが出力された。

    PHP Parse error:  syntax error, unexpected 'unset' 
    

原因

  • 下記の問題のコードを記載する。

    // キーを指定した値の削除
    $array = unset($array['str3']);
    
  • unset関数はもともとの配列からキーを指定して要素を削除するので戻り値を変数や配列に入れようとしていることが間違えていた。

正しいコード

  • 下記のように記載することで問題は解決した。

    <?php
    // 連想配列の定義
    $array = [
        'str1' => 'a',
        'str2' => 'b',
        'str3' => 'c'
    ];
    
    // キーを指定した値の削除
    unset($array['str3']);
    
    // 確認
    var_dump($array);
    
    ?>
    
  • 繰り返しになるようだがunset関数は指定された配列本体の要素を削除する。そのためunset関数にキーを指定した配列を与えた段階ですでにもともとの配列からはキーとキーに紐づく値は削除されたことになる。

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1