質問: *編集前の質問を消してしまったため、後半に追記しました。 ご迷惑をおかけ申し訳ありません。 前提・実現したいこと ---------- PHPの連想配列を用い置換したいのですが その際に、複数のキーに一つの値を入れ置換するやり方が知りたいです。 どう使いたいか ------- 例として、下記に書かれている**「元のソースコード**」では放送局の数だけ要素を作る必要があるので **「イメージのソースコード」**のように都道府県ごとに放送局を一つにまとめて都道府県名に置換したいです。 問題 -- 配列で複数のキーに一つの値を入れ、それを連想配列に入れることはできたのですが 置換を行おうとするとエラーになります。 エラーになったコード内容とエラー内容は**「試したたこと**」に記載しました。 ### 元のソースコード ``` '山梨県', 'テレビ山梨' => '山梨県', '新潟放送' => '新潟県', 'テレビ新潟' => '新潟県', '新潟総合テレビ' => '新潟県', '新潟テレビ21' => '新潟県', ]; echo str_replace(array_keys($replace), array_values($replace), $target); // 結果 山梨県, 新潟県, 新潟県 ?> ``` ### イメージのソースコード ``` '山梨県' $niigata => '新潟県' ]; echo str_replace(array_keys($replace), array_values($replace), $target); ?> ``` 試したこと ----- ### エラーが出たソースコード ``` '新潟県', 'テレビ新潟' => '新潟県', '新潟総合テレビ' => '新潟県', '新潟テレビ21' => '新潟県', ]; echo str_replace(array_keys($replace), array_values($replace), $target); ?> ``` ``` エラーメッセージ PHP Notice: Array to string conversion in /workspace/Main.php on line 16 ``` 編集前の内容 ------ ### PHPの配列で複数のキーに一つの値を入れたい場合 PHPの配列で複数のキーに一つの値を入れ置換するやり方が知りたいです。 下記の「元ソースコード」を「イメージのソース」のように 複数のキーに一つの値を入れる際に1行ですませるようにしたいです。 ### 元のソースコード ``` '山梨県', 'テレビ山梨' => '山梨県', ]; print_r($replace); ?> ``` ### イメージのソースコード ``` '山梨県' ]; print_r($replace); ?> ``` ``` エラーメッセージ PHP Warning: Illegal offset type in /workspace/Main.php on line 6 ```
回答: > > 配列を使って置換をしようと考えています。 > > > `str_replace`でしたら、**置換先だけ文字列**の指定を行うことができます(PHPリファレンス)。わざわざ連想配列を作らなくても大丈夫です。 ``` $yamanashi = ['山梨放送','テレビ山梨' ]; $replaced = str_replace($yamanashi, '山梨県', $target); ```