作成
PHPの配列・連想配列の結合
配列・連想配列の結合には #*#array_merge() , #*#array_merge_recursive() , #*#$arr1+$arr2 の3つの方法があります。こういうのはクセを知るほうが早いです。ちなみに #*#recursive とは「再帰的」の意味です。 ### title 通常の配列の結合 ###source ret (配列の定義) $arr1 = array("A","B","C","D"); $arr2 = array("C","D","E","F"); ### title3 #*#array_merge ###memo array_merge($arr1, $arr2) ###source $arr3 = array_merge($arr1, $arr2) ; print_r($arr3); //結果 Array ( [0] => A [1] => B [2] => C [3] => D [4] => C [5] => D [6] => E [7] => F ) ###memo array_merge($arr2, $arr1) ###source $arr3 = array_merge($arr2, $arr1) ; print_r($arr3); //結果 Array ( [0] => A [1] => B [2] => C [3] => D [4] => C [5] => D [6] => E [7] => F ) ### title3 #*#array_merge_recursive ###memo array_merge_recursive($arr1, $arr2) ; ###source $arr3 = array_merge_recursive($arr1, $arr2) ; print_r($arr3); //結果 Array ( [0] => A [1] => B [2] => C [3] => D [4] => C [5] => D [6] => E [7] => F ) ### title3 #*#A+B ###memo $arr1 + $arr2 ###source $arr3 = $arr1 + $arr2 ; print_r($arr3) ; //結果 Array ( [0] => A [1] => B [2] => C [3] => D ) ###memo $arr2 + $arr1 ###source $arr3 = $arr2 + $arr1 ; print_r($arr3) ; //結果 Array ( [0] => C [1] => D [2] => E [3] => F ) ### title3 dig A+B *配列の中身を数値で実験 ###memo dig ちなみに、数値の配列同士の足し算をしてみると・・・やはり配列の結合というか上書きでした。Pythonのnumpy みたいに 配列の足し算になれると、ちょっと勘違いしやすいです。 ###source dig $arr1 = array(1,2,3,4); $arr2 = array(10,20,30,40); $arr3 = $arr2 + $arr1 ; print_r($arr3) ; //結果 Array ( [0] => 10 [1] => 20 [2] => 30 [3] => 40 ) ###memo dig2 通常の配列(キーが数値)の場合は挙動はどれもかわりません。配列をどんどん後ろにくっつけていくイメージです。しかし、連想配列になると、関数の違・引数の順番によっても結果が異なります。 ###title 連想配列の結合 ###memo 以下の $arr1, $arr2 の連想配列を実験データに使います。 ###source ret (実験データーの中身) print_r($arr1); //$arr1 のデータの中身 Array ( [a] => A [b] => B [c] => C [d] => D ) print_r($arr2); //$arr2 のデータの中身 Array ( [c] => CC [d] => DD [e] => EE [f] => FF ) ###title3 #*#array_merge ### キーに重複があれば上書きするイメージ ###source $arr3 = array_merge($arr1, $arr2) ; print_r($arr3); //結果 Array ( [a] => A [b] => B [c] => CC [d] => DD [e] => EE [f] => FF ) ###memo $arr2, $arr1 に順番入れ替え。 ###source $arr3 = array_merge($arr2, $arr1) ; print_r($arr3); //結果 Array ( [c] => C [d] => D [e] => EE [f] => FF [a] => A [b] => B ) ###title3 #*#array_merge_recursive ### キーに重複があれば追加するイメージ ###source $arr3 = array_merge_recursive($arr1, $arr2) ; print_r($arr3) ; //結果 Array ( [a] => A [b] => B [c] => Array ( [0] => C [1] => CC ) [d] => Array ( [0] => D [1] => DD ) [e] => EE [f] => FF ) ###memo $arr2, $arr1 に順番入れ替え。 ###source $arr3 = array_merge_recursive($arr2, $arr1) ; print_r($arr3) ; //結果 Array ( [c] => Array ( [0] => CC [1] => C ) [d] => Array ( [0] => DD [1] => D ) [e] => EE [f] => FF [a] => A [b] => B ) ###title3 #*#A+B ### キーに重複があればスルーするイメージ #G#個人的にはこれを良く使うかな・・・ ###source $arr3 = $arr1 + $arr2 ; print_r($arr3) ; // 結果 Array ( [a] => A [b] => B [c] => C [d] => D [e] => EE [f] => FF ) ###memo B+A にすると ###source $arr3 = $arr2 + $arr1 ; print_r($arr3) ; // 結果 Array ( [c] => CC [d] => DD [e] => EE [f] => FF [a] => A [b] => B ) ###title 引数 ###memo 以上の説明では #*#array_merge() も #*#array_merge_recursive() も2つの配列しか渡してませんが、さらに多くの配列を渡すこともできます。 ###source $arr5 = array_merge($arr1, $arr2, $arr3, $arr4) ;
wakatta 記法
投稿の仕方
基本的な記法
エンジニア向け記法
記法のサンプル
このコンテンツを見る