PHPで配列を変更しようとしてエラー

こんにちは、さるまりんです。

今回はPHPの小ネタで。

アルバムの一曲目のタイトルを変更するPHPコードです。

$album->songs[0]->title = $new_title;

こんな風に配列の中身を変更しようとしたら

Indirect modification of overloaded property Album::$songs has no effect

と叱られてしまいました。

このプロパティの変更は効果がないようです。

“indirect modification”は「間接的な変更」という意味です。

曲のタイトルが変えられない。。

ではどうしましょうか?

こう書き換えました。

$song = $album->songs[0];
$song->title = $new_title;
$album->songs[0] = $song;

これでエラーが出なくなり、期待通りに動いてくれました。

見たことのないエラーだったので焦りました。

3行になってちょっと長くなってしまいましたが、回避できてよかったです。

読んでくださってありがとうございました。

それではまた!