array(4) { [0]=> array(3) { [0]=> string(6) "AABB**" [1]=> string(6) "BB**DD" [2]=> string(6) "**DDEE" } [1]=> array(3) { [0]=> string(6) "******" [1]=> string(6) "****AA" [2]=> string(6) "**AAAA" } [2]=> array(3) { [0]=> string(6) "**AA**" [1]=> string(6) "ABCDEF" [2]=> string(6) "AA****" } [3]=> array(3) { [0]=> array(3) { [0]=> string(4) "**AA" [1]=> string(4) "BB**" [2]=> string(4) "**DD" } [1]=> array(2) { [0]=> string(4) "A**A" [1]=> string(4) "B**B" } [2]=> array(2) { [0]=> array(1) { [0]=> string(2) "AA" } [1]=> array(1) { [0]=> string(2) "**" } } } }
多次元配列内の全ての文字列を一括で置換する方法
スポンサーリンク
PHP では通常の配列については str_replace で配列内の文字列を一括置換できます。 (参考:配列内の全ての文字列を一括で置換する方法)
しかし str_replace は多次元配列には対応していない為、多次元配列内の文字列を一括置換するには別の方法を考える必要があります。
PHP で多次元配列の全ての文字列を一括で置換する方法の一つとして、 array_walk_recursive を使用する方法があります。 array_walk_recursive は配列を再帰的に探索し、第二引数で渡されたコールバック関数を適用します。
サンプルコードは次の通りです。
php(実行可能なサンプルコード) | |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | $ary = array( array('AABBCC', 'BBCCDD', 'CCDDEE'), array('CCCCCC', 'CCCCAA', 'CCAAAA'), array('CCAACC', 'ABCDEF', 'AACCCC'), array( array('CCAA', 'BBCC', 'CCDD'), array('ACCA', 'BCCB'), array( array('AA'), array('CC') ), ) ); //多次元配列を再帰的に処理して 'CC' をすべて '**' に置き換える。 array_walk_recursive($ary, function (&$val, $key) { $val = str_replace('CC', '**', $val); }); var_dump($ary); |
上記の実行結果は次の通りです。
スポンサーリンク
- 配列
- 配列を初期化する方法
- 多次元配列内の全ての文字列を一括で置換する方法
- 配列内の全ての文字列を一括で置換する方法
- 連想配列のキーの大文字・小文字を切り替える方法
- 配列の要素数を確認する方法
- foreach で配列の全ての要素を処理する方法
- 配列を並べ替える方法(ソートする方法)
- 連想配列(ハッシュ)を使用する方法
- 連想配列から特定のキーの値を取り出して配列を作成する方法
- 連想配列(ハッシュ)に指定したキーが存在するかを確認する方法
- 連想配列(ハッシュ)のキーの一覧を取得する方法
- 二次元配列のインデックスを特定のキーの値に置き換える方法
- 二次元配列を複数のキーを指定して並べ替える方法
- 二次元配列をソートキーを指定して並び替える方法
- 配列を CSV に変換し、必要なエスケープを行う