Author Archives: kyouta

配列を配列で上書きする関数

By | 2016/12/02 4:56 PM

配列を配列で置き換えたい場合というのがあります。

例えば、次のような、ある人の体重(weight)、身長(height)のデータを表す配列があったとします。

そしてこの人は、正月に帰省した際、おいしいものを食べすぎて体重が増加してしまった、とします。
年末など、親戚がたくさん集まるようなイベントがあると、ついつい食べ過ぎて危険ではありますね。
さて、この場合の更新データは、次のような配列となります。

正月前の体重、身長のデータを正月後の値で更新したい場合、次のようなコードになります。

foreachで元データの配列をループさせながら、内側で更新データの配列をループさせ、その両者のキーが同じデータがあれば、元データが上書きされる、という処理ですね。
このコードもPHPの5.3.0以降の場合は、次のように簡潔に記述することが可能になります。

この関数、array_replaceの定義は以下のようになります。

実行することで、第一引数の配列が、第二引数以降の配列によって上書きされた配列を返します。
第二引数以降というのは、第三引数、第四引数…も指定可能ということで、次のようなことも可能です。
正月後、体重が増えてしまいガッカリしていたものの、さらにその後の健康診断に行ったら身長が175cmになっていた、というケース。

実行結果は次のようになります。

第二引数以降の、第一引数への上書きの優先度については、上記の例でもわかるように、後に指定した引数が優先される仕組みになっています。
上記の例では、第二引数よりも第三引数が優先されるということです。

今回は、配列を配列で上書きする関数、array_replaceを紹介しました。いつもforeachで行っている処理を簡潔に記述することが可能になりますので、ぜひ使ってみてください。