お世話になります。
もろもろ調べたのですが、なかなか納得ができません。
掲題の配列の要素をそれぞれ2倍にする関数ですが
- array_walkはもとの配列の変数$arrayのままで、function適用後の値(2倍かけた値)が得られ、一方array_mapは
$array2に格納して出力しなければfunction適用後の値(2倍かけた値)が得られないのは、walkは破壊的メソッドでmapは非破壊的メソッドであるからという理解であっていますでしょうか?
2)なぜ、コールバック関数の中身が$item= $item2;とreturn $item2;と違いが生じるのかがそれぞれの関数の仕様からいまいち理解ができません。なんとなくmapのほうが理解できるのですが、walkはマニュアルを見ると返り値として「成功した場合に TRUE を、失敗した場合に FALSE を返します。」と説明がされています。この違いからくるのでしょうか?
3)2)に関連してですが、そもそも成功と失敗とは何を指しているのでしょうか?
4)2)に関連してですが、このコールバック関数でtrueやfalseを返すことに全く意味がないように思えるのですが。。配列の値やkeyに関数を適用する意図があって作られたwalkやmapであると理解しているのですが、まったくarray_walkの意味がないような気がしてならないのですが、どのようなケースを想定してる関数(これでなくては処理できない?)なのでしょうか?
もし具体的な例とかがあれば。。
なにとぞ、宜しくお願い申し上げます。
walk <?php $array=array(5,10); function twice (&$item) { $item= $item*2; } array_walk($array,'twice'); var_dump($array); ?>
map $array=array(5,10); function twice ($item) { return $item*2; } $array2=array_map('twice',$array); var_dump($array2); ?>
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/11/09 07:40