*編集前の質問を消してしまったため、後半に追記しました。
ご迷惑をおかけ申し訳ありません。
前提・実現したいこと
PHPの連想配列を用い置換したいのですが
その際に、複数のキーに一つの値を入れ置換するやり方が知りたいです。
##どう使いたいか
例として、下記に書かれている**「元のソースコード**」では放送局の数だけ要素を作る必要があるので
**「イメージのソースコード」**のように都道府県ごとに放送局を一つにまとめて都道府県名に置換したいです。
問題
配列で複数のキーに一つの値を入れ、それを連想配列に入れることはできたのですが
置換を行おうとするとエラーになります。
エラーになったコード内容とエラー内容は**「試したたこと**」に記載しました。
元のソースコード
php
1<?php 2 3$target = 'テレビ山梨, 新潟放送, 新潟テレビ21'; 4 5$replace = [ 6'山梨放送' => '山梨県', 7'テレビ山梨' => '山梨県', 8'新潟放送' => '新潟県', 9'テレビ新潟' => '新潟県', 10'新潟総合テレビ' => '新潟県', 11'新潟テレビ21' => '新潟県', 12]; 13 14echo str_replace(array_keys($replace), array_values($replace), $target); 15 16// 結果 山梨県, 新潟県, 新潟県 17?> 18
イメージのソースコード
php
1<?php 2 3$target = 'テレビ山梨, 新潟放送, 新潟テレビ21'; 4 5$yamanashi = ['山梨放送','テレビ山梨' ]; 6$niigata = ['新潟放送', 'テレビ新潟', '新潟総合テレビ', '新潟テレビ21' ]; 7 8$replace = [ 9 $yamanashi => '山梨県' 10 $niigata => '新潟県' 11 ]; 12 13echo str_replace(array_keys($replace), array_values($replace), $target); 14?> 15
試したこと
エラーが出たソースコード
php
1 2<?php 3 4$target = 'テレビ山梨, 新潟放送, 新潟テレビ21'; 5 6$yamanashi = ['山梨放送','テレビ山梨' ]; 7$res = array_combine( $yamanashi, array_pad( [], count( $yamanashi ), '山梨県' ) ); 8 9$replace = [ 10 $res, 11 '新潟放送' => '新潟県', 12 'テレビ新潟' => '新潟県', 13 '新潟総合テレビ' => '新潟県', 14 '新潟テレビ21' => '新潟県', 15 ]; 16 17echo str_replace(array_keys($replace), array_values($replace), $target); 18 19?> 20 21 22
エラーメッセージ PHP Notice: Array to string conversion in /workspace/Main.php on line 16
##編集前の内容
###PHPの配列で複数のキーに一つの値を入れたい場合
PHPの配列で複数のキーに一つの値を入れ置換するやり方が知りたいです。
下記の「元ソースコード」を「イメージのソース」のように
複数のキーに一つの値を入れる際に1行ですませるようにしたいです。
元のソースコード
php
1<?php 2 3 4$replace = [ 5'山梨放送' => '山梨県', 6'テレビ山梨' => '山梨県', 7]; 8 9print_r($replace); 10 11?> 12
イメージのソースコード
php
1<?php 2 3$yamanashi = ['山梨放送','テレビ山梨' ]; 4 5$replace = [ 6 $yamanashi => '山梨県' 7 ]; 8 9print_r($replace); 10?> 11
エラーメッセージ PHP Warning: Illegal offset type in /workspace/Main.php on line 6
回答4件
あなたの回答
tips
プレビュー