こんにちは、さるまりんです。
今回は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行になってちょっと長くなってしまいましたが、回避できてよかったです。
読んでくださってありがとうございました。
それではまた!