Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationEventAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
1
Help us understand the problem. What are the problem?

More than 1 year has passed since last update.

posted at

Organization

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

目的

  • 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関数にキーを指定した配列を与えた段階ですでにもともとの配列からはキーとキーに紐づく値は削除されたことになる。

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
1
Help us understand the problem. What are the problem?