・IT/Web系エンジニアの経験者の方
・どこの転職エージェントを利用しようか迷っている方
それなら、キッカケエージェントにご相談!
キッカケエージェントでは、少数精鋭のエージェントが、エンジニアの経験やスキル、志向性などをカウンセリングし、的確なアドバイスを提供します!
また、徹底した企業へのヒアリングにより、最適なマッチングを実現し、今では内定率が一般的なエージェントの2倍以上となっています!
転職エージェントに迷っている方、まずは無料でキャリア相談から!
(この記事は2024年01月05日に投稿されました。)
PHPで対象の配列の要素を違う要素へ置換するにはstr_replace()を使用します。
str_replace()とは対象の文字列を違う文字列へ置き換える関数となります。
そのため、配列に対して使用することで対象の配列の要素を異なる要素へ置換することができます。
また、2次元配列や3次元配列のような多次元配列にも使用できたり、連想配列にも使用できたりします。
以上のことから、もし配列の要素を違う要素に置換したい場合にはstr_replace()を使用しましょう。
今回はPHPのstr_replace()で対象の配列の要素を違う要素へ置換する方法について紹介していきます。
対象の配列の要素を別の要素に置換したい場合
str_replace()とは
str_replace()と対象の文字列を違う文字列へ置き換える関数になります。
そのため配列に対して使用すると、対象の要素を異なる要素に置き換えることができます。
もし、str_replace()の書き方について詳しく知りたい場合は下記の記事をご参照ください。
str_replace()で対象の配列の要素を違う要素へ置換するサンプルコード
str_replace()で対象の配列要素を違う要素へ置換するサンプルコードをご紹介します。
ここでは、下記の3パターンでstr_replace()を使用します。
- 対象の配列の要素が存在する場合
- 対象の配列の要素が存在しない場合
- 対象の配列の要素が複数存在する場合
対象の配列の要素が存在する場合
対象の配列の要素が存在する場合にstr_replace()を使用するとリストに格納された数値の合計値が返されます。
● index.php
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | <?php echo "● 置換前の配列-1"; $array1 = ['東京', '大阪', '愛知', '福岡']; print_r($array1); echo "● str_replace()使用後-1"; $array1_repl = str_replace('大阪', 'Osaka', $array1); print_r($array1_repl); echo "● 置換前の配列-2"; $array2 = ['Tokyo', 'Osaka', 'Aichi', 'Fukuoka']; print_r($array2); echo "● str_replace()使用後-2"; $array2_repl = str_replace('Aichi', '愛知', $array2); print_r($array2_repl); ?> |
● 実行結果
str_replace()で対象の配列の要素が存在する場合に対象の要素を違う要素に置換しています。
そのため、「大阪」の要素が「Osaka」に、「Aichi」の要素が「愛知」に変換されて表示されています。
対象の配列の要素が存在しない場合
対象の配列の要素が存在しない場合にstr_replace()を使用するとエラーが発生します。
● index.php
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | <?php echo "● 置換前の配列-1"; $array1 = ['東京', '大阪', '愛知', '福岡']; print_r($array1); echo "● str_replace()使用後-1"; $array1_repl = str_replace('神奈川', 'Kanagawa', $array1); print_r($array1_repl); echo "● 置換前の配列-2"; $array2 = ['Tokyo', 'Osaka', 'Aichi', 'Fukuoka']; print_r($array2); echo "● str_replace()使用後-2"; $array2_repl = str_replace('Kanagawa', '神奈川', $array2); print_r($array2_repl); ?> |
● 実行結果
str_replace()で配列の対象の要素を置換しています。
今回は置換対象の要素が存在しないことから配列の要素が変換されないまま表示されています。
対象の配列の要素が複数存在する場合
対象の配列の要素が存在しない場合にstr_replace()を使用するとエラーが発生します。
● index.php
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | <?php echo "● 置換前の配列-1"; $array1 = ['東京', '大阪', '愛知', '福岡', '東京']; print_r($array1); echo "● str_replace()使用後-1"; $array1_repl = str_replace('東京', 'Tokyo', $array1); print_r($array1_repl); echo "● 置換前の配列-2"; $array2 = ['Tokyo', 'Osaka', 'Aichi', 'Fukuoka', 'Osaka']; print_r($array2); echo "● str_replace()使用後-2"; $array2_repl = str_replace('Osaka', '大阪', $array2); print_r($array2_repl); ?> |
● 実行結果
str_replace()で配列の対象の要素を置換しています。
そのため、全ての「東京」の要素が「Tokyo」に、全ての「Osaka」の要素が「大阪」に変換されて表示されています。
str_replace()で対象の多次元配列の要素を違う要素へ置換するサンプルコード
str_replace()で対象の多次元配列の要素を違う要素へ置換するサンプルコードをご紹介します。
str_replace()で多次元配列の要素を違う要素へ置換するには下記のように処理を行います。
- foreach()を使用して多次元配列内の1次元配列を取り出す。
- それらの配列にarray_map()を使用して対象の要素を違う要素に置換し、対象外の要素はそのままにした要素を作成。
- 処理を行った配列をarray_push()で新たな配列に追加。
もし、今回使用した関数について詳しく知りたい場合は下記の記事をご参考下さい。
● foreach()
● array_map()
● array_push()
2次元配列の場合
2次元配列に対してstr_replace()を使用します。
● index.php
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | <?php echo "● 置換前の2次元配列"; $array1 =[ ['東京', '大阪', '愛知', '福岡'], ['神奈川', '京都', '東京', '兵庫'], ]; print_r($array1); echo "● str_replace()使用後"; $array1_repl = []; foreach ($array1 as $array1n) { $result = array_map("repl", $array1n); array_push($array1_repl, $result); } print_r($array1_repl); function repl($array1n) { return str_replace('東京', 'Tokyo', $array1n); } ?> |
● 実行結果
str_replace()で対象の2次元配列の要素を違う要素に置換しています。
そのため、1次元配列内にある「東京」の要素が「Tokyo」の要素に変化して2次元配列として表示されています。
3次元配列の場合
3次元配列に対してstr_replace()を使用します。
● index.php
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | <?php echo "● 置換前の3次元配列"; $array1 =[ [['東京', '大阪', '愛知', '福岡'],['神奈川', '京都', '東京', '兵庫']], [['北海道', '沖縄', '東京', '千葉'],['岡山', '東京', '埼玉', '静岡']] ]; print_r($array1); echo "● str_replace()使用後"; $array1_repl = []; foreach ($array1 as $array11n) { $array1n_repl = []; foreach ($array11n as $array1n) { $result = array_map("repl", $array1n); array_push($array1n_repl, $result); } array_push($array1_repl, $array1n_repl); } print_r($array1_repl); function repl($array1n) { return str_replace('東京', 'Tokyo', $array1n); } ?> |
● 実行結果
str_replace()で対象の3次元配列の要素を違う要素に置換しています。
そのため、1次元配列内にある「東京」の要素が「Tokyo」の要素に変化して3次元配列として表示されています。
str_replace()で対象の連想元配列の要素を違う要素へ置換するサンプルコード
str_replace()で対象の連想元配列の要素を違う要素へ置換するサンプルコードをご紹介します。
連想配列のキーを置換する場合
連想配列のキーを置換するにはarray_keys()を使用します。
array_keys()とは、配列や連想配列のキーを取得する関数になります。
そのため、array_keys()で取得したキーの配列に対してstr_replace()を使用することで連想配列のキーを置換することができます。
● index.php
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | <?php echo "● 置換前の連想配列"; $array1 = [ '東京' => 'Tokyo', '大阪' => 'Osaka', '愛知' => 'Aichi', '福岡' => 'Fukuoka', '北海道' => 'Hokkaido' ]; print_r($array1); echo "● str_replace()使用後"; $array1_keys_repl = str_replace("北海道", "HOOKKAIDO", array_keys($array1), $cnt); print_r($array1_keys_repl); echo "● 置換回数: ".$cnt; ?> |
● 実行結果
str_replace()で連想配列のキーを置換しています。
そのため、連想配列のキーである「北海道」が「HOOKKAIDO」に変化して表示されています。
もし、array_keys()について詳しく知りたい場合は下記の記事をご参考ください。
連想配列の値を置換する場合
連想配列の値を置換するにはarray_values()を使用します。
array_values()とは、配列や連想配列の値を取得する関数になります。
そのため、array_values()で取得した値の配列に対してstr_replace()を使用することで連想配列の値を置換することができます。
● index.php
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | <?php echo "● 置換前の連想配列"; $array1 = [ '東京' => 'Tokyo', '大阪' => 'Osaka', '愛知' => 'Aichi', '福岡' => 'Fukuoka', '北海道' => 'Hokkaido' ]; print_r($array1); echo "● str_replace()使用後"; $array1_vals_repl = str_replace('Hokkaido', 'ほっかいどう', array_values($array1), $cnt); print_r($array1_vals_repl); echo "● 置換回数: ".$cnt; ?> |
● 実行結果
str_replace()で連想配列の値を置換しています。
そのため、連想配列の値である「Hokkaido」が「ほっかいどう」に変化して表示されています。
他の関数と組み合わせてstr_replace()を使用する場合
str_replace()は他の関数と組み合わせることでも使用することができます。
今回は下記の関数と組み合わせてstr_replace()を使用します。
- str_pad()
- str_repeat()
- str_shuffle()
str_pad()と組み合わせて使用する場合
str_pad()と組み合わせて使用すると、対象の要素をフォーマットの形式の要素に置換することができます。
● index.php
1 2 3 4 5 6 7 8 9 | <?php echo "● 置換前の配列"; $array1 = ['東京', '大阪', '愛知', '福岡', '東京']; print_r($array1); echo "● str_replace()使用後"; $array1_repl = str_replace('東京', str_pad('東京', 20, '#'), $array1); print_r($array1_repl); ?> |
● 実行結果
str_pad()を使用してstr_replace()で対象の配列の要素を置換しています。
そのため、「東京」の要素が「東京」と「#」の20文字の要素に変換されて表示されています。
もし、str_pad()について詳しく知りたい場合は下記の記事をご参照ください。
str_repeat()と組み合わせて使用する場合
str_repeat()と組み合わせて使用すると、対象の配列の要素をn回反復した要素に置換することができます。
● index.php
1 2 3 4 5 6 7 8 9 | <?php echo "● 置換前の配列"; $array1 = ['東京', '大阪', '愛知', '福岡', '東京']; print_r($array1); echo "● str_replace()使用後"; $array1_repl = str_replace('東京', str_repeat('東京', 10), $array1); print_r($array1_repl); ?> |
● 実行結果
str_repeat()を使用してstr_replace()で対象の配列の要素を置換しています。
そのため、「東京」の要素が「東京」を10回繰り返された要素に変換されて表示されています。
もし、str_repeat()について詳しく知りたい場合は下記の記事をご参照ください。
str_shuffle()と組み合わせて使用する場合
str_shuffle()と組み合わせて使用すると、対象の配列の要素をシャッフルした要素に置換することができます。
● index.php
1 2 3 4 5 6 7 8 9 | <?php echo "● 置換前の配列"; $array1 = ['東京', '大阪', '愛知', '福岡', '東京']; print_r($array1); echo "● str_replace()使用後"; $array1_repl = str_replace('東京', str_shuffle('Tokyo'), $array1); print_r($array1_repl); ?> |
● 実行結果
str_shuffle()を使用してstr_replace()で対象の配列の要素を置換しています。
そのため、「東京」の要素が「Tokyo」のシャッフルされた要素に変換されて表示されています。
もし、str_shuffle()について詳しく知りたい場合は下記の記事をご参照ください。
str_replace()を使用した実際のケース
str_replace()を使用した実際のケースについてご紹介します。
例えば、str_replace()を使用してWordPressのカテゴリーで特定のカテゴリー名を置換して表示します。
● index.php
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | <?php get_header(); ?> <div class= "flex-box"> <main id="site-content" role="main"> <?php $categories_repl = []; $startTag = '<h2 class="title">'; $endTag = '</h2>'; $categories = get_categories(); if ( $categories ) { foreach ($categories as $category) { array_push($categories_repl, $category->name); } } $categories_repl = str_replace('未分類', '未カテゴリー', $categories_repl); foreach ($categories_repl as $category) { echo $startTag.$category.$endTag; } ?> </main> <aside class= "site-widget"> <?php $content2 = "サイドバー"; echo '<div class = "widget-box">'.$content2.'</div>'; ?> </aside> </div> <?php get_footer(); ?> |
● style.css
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | .flex-box { display: flex; width: 87%; height: 700px; margin: auto; text-align: center; } .title { font-size: 20px; font-weight:bold; } #site-content { width:70%; border: 1px solid black; background: lightgray; margin-right: 2%; } .site-widget { width:25%; border: 1px solid black; background: lightgray; } |
● 実行結果
str_replace()で特定のカテゴリー名を置換して表示します。
今回は、get_categories()で設定しているカテゴリー名を取得していますが、取得した後にstr_replace()で「未分類」を「未カテゴリー」に変換しています。
そのため、「未分類」から「未カテゴリー」に変更されていますが、それ以外はWordPress上で設定したカテゴリー名が表示されています。
大文字/小文字関係なく対象の配列の要素を違う要素へ置換する場合
大文字/小文字関係なく対象の配列の要素を違う要素へ置換するにはstr_ireplace()を使用します。
str_ireplace()とは大文字小文字関係なく対象の文字列を違う文字列に置換するメソッドになります。
そのため、配列に対して使用することで、大文字小文字関係なく対象の要素を違う要素に置換することができます。
● index.html
1 2 3 4 5 6 7 8 9 | <?php echo "● 置換前の配列"; $array1 = ['TOKYO', 'OSAKA', 'AICHI', 'FUKUOKA', 'KYOTO']; print_r($array1); echo "● str_ireplace()使用後"; $array1_repl = str_ireplace('fukuoka', '福岡', $array1); print_r($array1_repl) ?> |
● 実行結果
str_ireplace()で大文字小文字関係なく配列の対象の要素を違う要素に置換しています。
今回は大文字小文字関係なく置換対象になるため、「FUKUOKA」が「福岡」に変化して表示されています。
正規表現で対象の配列の要素を違う要素へ置換する場合
正規表現を使用して対象の配列の要素を違う要素へ置換するにはpreg_replace()を使用します。
preg_replace()とは正規表現を使用して対象の文字列を違う文字列に置換するメソッドになります。
そのため、配列に対して使用することで、正規表現で対象の要素を違う要素に置換することができます。
● index.html
1 2 3 4 5 6 7 8 9 10 | <?php echo "● 置換前の配列"; $array1 = ['TOKYO', '大阪', 'AICHI', '福岡', 'KYOTO']; print_r($array1); echo "● preg_replace()使用後"; $array_kana = ['東京', '大阪', '愛知', '福岡', '京都']; $array1_repl = preg_replace('/[A-Z]{2,}/', '県名', $array1); print_r($array1_repl); ?> |
● 実行結果
preg_replace()で正規表現を使用して対象の配列の要素を違う要素へ置換しています。
今回は「AからZ」の中で2文字以上続く要素が置換対象になるため、「TOKYO」、「AICHI」、「KYOTO」が「県名」に変化して表示されています。
まとめ
⚫︎ str_replace()とは対象の文字列を違う文字列に置換することができる関数である
⚫︎ 対象の配列の要素が存在する場合にstr_replace()を使用すると対象の要素を置換する要素に変換された後の配列を返す。
⚫︎ 対象の文字列が存在しない場合にstr_replace()を使用するとそのままの配列を返す。
⚫︎ 対象の文字列が複数存在する場合にstr_replace()を使用すると全ての対象の要素を違う要素に変換した配列を返す。
⚫︎ 連想配列の対象のキーを違うキーに置換するにはarray_keys()で取得した配列に対してstr_replace()を使用する。
⚫︎ 連想配列の対象の値を違う値に置換するにはarray_values()で取得した配列に対してstr_replace()を使用する。
⚫︎ str_replace()は1次元配列だけでなく、多次元配列の要素も置換することができる。
⚫︎ str_replace()とstr_pad()を組み合わせて使用すると、対象の要素をフォーマットの形式の要素に置換することができる。
⚫︎ str_replace()とstr_repeat()を組み合わせて使用すると、対象の配列の要素をn回反復した要素に置換することができる。
⚫︎ str_replace()とstr_shuffle()を組み合わせて使用すると、対象の配列の要素をシャッフルした要素に置換することができる。
⚫︎ 大文字小文字関係なく対象の配列の要素を違う要素に置換するにはstr_ireplace()を使用する。
⚫︎ 正規表現で対象の配列の要素を違う要素に置換するにはpreg_replace()を使用する。