お世話になります。
以下のような配列$combがありすべての
"---"を000に変換しようと考えております。
そこでreplace.phpのコードを書いております。
下部のAのケースであれば、正しくすべての多次元配列の各要素を置換し、各要素を出力してくれます。
一方で、
下部のBのケースでは、多次元配列の中で初めの配列しか出力をしてくれません。
<質問>
①実際にはケースBのように、foreachの外部で配列を使用したいのですが、どのようにコーディングすればよろしいでしょうか?
②下部のAのケースの場合(foreach内でprint_rを使用する場合)は確かに、すべての多次元配列が置換後の形で出力されます。これはこれで不思議なのですが$replace[]は最下層の配列の各要素($value)を"---"から"000"に置換して、$replace[]に格納せよ、という指示に読み取れます。
とすれば
foreach内部で実行されるprint_rの結果も
以下のように、"---"の部分だけが置換、取得され、配列に格納されていくような気がするのですが、実際には、置換していない"2015年5月"等の要素も当然のように$replaceの配列の要素を構成し続けています。
$replace=array(
[0]=>
(array
[0]=>"000"
[1]=>"000"
)
[1]=>
(array
[0]=>"000"
)
[2]=>
(array
[0]=>"000"
)
もしpreg_replaceが他の配列の形や要素を維持しつつ、該当置換箇所だけ入れ替える仕様であるとすれば、なおさらforeachの外でprint_rをしてもすべての配列を出力してくれるような気がするのですが、マニュアルを読んでもそこまで読み取れません。。。
よろしくお願い申し上げます。
配列」$comb array(3) { [0]=> array(18) { [0]=> string(14) "2015年5月" [1]=> string(18) "---" [2]=> string(18) "---" } [1]=> array(18) { [0]=> string(15) "2015年12月" [1]=> string(18) "(2016年1月20日)" [2]=> string(4) "---" } [2]=> array(18) { [0]=> string(14) "2016年6月" [1]=> string(18) "(2016年7月16日)" [2]=> string(4) "---" } }
replace.phpファイル Aのケース foreach ($comb as $key => $value) { $replace[]=preg_replace("/---/","000", $value); print_r($replace); } Bのケース foreach ($comb as $key => $value) { $replace[]=preg_replace("/---/","000", $value); } print_r($replace);
実際の配列($var_dump)は以下の通りです。
array(3) { [0]=> array(18) { [0]=> string(14) "XXXX年X月" [1]=> string(18) "(XXXX年X月XX日)" [2]=> string(4) "X月" [3]=> string(6) "XX,XXXX" [4]=> string(5) "X,XXX" [5]=> string(5) "X,XXX" [6]=> string(5) "X,XXX" [7]=> string(8) "X,XXX.XX" [8]=> string(3) "---" [9]=> string(3) "---" [10]=> string(3) "---" [11]=> string(10) "XXX,XXX.00" [12]=> string(12) "X,XXX,XXX枚" [13]=> string(7) "XXX,XXX" [14]=> string(7) "XXX,XXX" [15]=> string(6) "XX.XX%" [16]=> string(5) "X.XX%" [17]=> string(5) "X.XX%" } [1]=> array(18) { [0]=> string(15) "XXXX年XX月" [1]=> string(18) "(XXXX年X月XX日)" [2]=> string(4) "X月" [3]=> string(6) "XX,XXXX" [4]=> string(5) "X,XXX" [5]=> string(5) "X,XXX" [6]=> string(5) "X,XXX" [7]=> string(8) "X,XXX.XX" [8]=> string(3) "---" [9]=> string(3) "---" [10]=> string(3) "---" [11]=> string(10) "XXX,XXX.00" [12]=> string(12) "X,XXX,XXX枚" [13]=> string(7) "XXX,XXX" [14]=> string(7) "XXX,XXX" [15]=> string(6) "XX.XX%" [16]=> string(5) "X.XX%" [17]=> string(5) "X.XX%" } [2]=> array(18) { [0]=> string(14) "2015X5月" [1]=> string(18) "(2016年X月XX日)" [2]=> string(4) "X月" [3]=> string(6) "XX,XXXX" [4]=> string(5) "X,XXX" [5]=> string(5) "X,XXX" [6]=> string(5) "X,XXX" [7]=> string(8) "X,XXX.XX" [8]=> string(3) "---" [9]=> string(3) "---" [10]=> string(3) "---" [11]=> string(10) "XXX,XXX.00" [12]=> string(12) "X,XXX,XXX枚" [13]=> string(7) "XXX,XXX" [14]=> string(7) "XXX,XXX" [15]=> string(6) "XX.XX%" [16]=> string(5) "X.XX%" [17]=> string(5) "X.XX%" } }
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/09/03 06:19
2016/09/03 06:25
2016/09/03 06:41
2016/09/03 06:44
2016/09/03 06:55