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