[PHP] 配列に関する関数メモ [4] – 配列を統合したり分解する
前回([PHP] 配列に関する関数メモ [3] – 配列の順番を並び替える )に引き続き、今回は配列を統合したり分解するような関数についてまとめました。
配列を統合して文字列にしたり、配列同士を統合する
- 配列を文字列で繋いで1つの文字列にする – implode()
- 文字列を特定の文字列で区切り配列にする – explode()
- 配列を統合する(重複キーが存在する場合は上書き) – array_merge()
- 配列を統合する(重複キーが存在する場合は最初のものが優先) – 配列結合演算子+
配列を分解する
配列を統合して文字列にしたり、配列同士を統合する
配列を文字列で繋いで1つの文字列にする – implode()
implode() 関数を使用すると配列の要素を文字列で連結して、新たな1つの文字列にすることができます。
配列 $array の値を文字列「◎」で連結して1つの文字列にする。
$array = array( 'いぬ', 'ねこ', 'すずめ', 'かわうそ' ); $value = implode( $array, '◎' ); //↓結果 $value → string(42) "いぬ◎ねこ◎すずめ◎かわうそ"
PHP: implode – Manual
文字列を特定の文字列で区切り配列にする – explode()
explode() 関数を使用すると前項の implode() 関数とは逆に、1つの文字列を指定した文字列で区切り配列に格納することができます。
文字列 $value の値を文字列「◎」で区切った配列にする。
$value = 'いぬ◎ねこ◎すずめ◎かわうそ'; $array = explode('◎', $value); //↓結果 $array → array(4) { [0]=> string(6) "いぬ" [1]=> string(6) "ねこ" [2]=> string(9) "すずめ" [3]=> string(12) "かわうそ" }
PHP: explode – Manual
配列を統合する(重複キーが存在する場合は上書き) – array_merge()
array_merge() 関数を使用すると1つ以上の配列同士を統合して1つの配列にまとめ直すことができます。
第二引数より後に指定した配列が、第一引数で指定した配列の後ろに追加されます。
数字キーは新しい配列の順番で振り直されます。連想配列で同じキーが存在した場合は、後から追加される値で上書きされます。
配列 $array_1 と $array_2 を1つの配列 $array にする。
$array_1 = array( 'a', 'b', 'c', 'd' ); $array_2 = array( 'e', 'f', 'g', 'h' ); $array = array_merge($array_1, $array_2); //↓結果 $array → array(8) { [0]=> string(1) "a" [1]=> string(1) "b" [2]=> string(1) "c" [3]=> string(1) "d" [4]=> string(1) "e" [5]=> string(1) "f" [6]=> string(1) "g" [7]=> string(1) "h" }
PHP: array_merge – Manual
配列を統合する(重複キーが存在する場合は最初のものが優先) – 配列結合演算子+
array_merge() 関数と同じく配列を統合することができます。
数字キー、連想配列のキーともに同じキーが存在する場合は最初の配列のものが残り、後の配列の値は無視されます。
配列 $array_1 と $array_2 を1つの配列 $array に統合する。
$array_1 = array( 'a', 'b', 'c', 'd' ); $array_2 = array( 'e', 'f', 'g', 'h' ); $array = $array_1 + $array_2; //↓結果 数字キーがすべて重複するため2番目の配列の値は無視 $array → array(4) { [0]=> string(1) "a" [1]=> string(1) "b" [2]=> string(1) "c" [3]=> string(1) "d" }
PHP: array_merge – Manual
配列を分解する
配列を分解して変数に代入する – list()
list() を使用すると配列を分解し、配列の順番で変数に代入することができます。
※バージョン7 からは文字列の変数が扱えなくなる(?)ようです。(PHP: 下位互換性のない変更点 – Manual)
配列 $array を変数に分解する。
$array = array('いぬ', 'ねこ', 'すずめ', 'かわうそ'); list($a, $b, $c, $d) = $array; //↓結果 $a → string(6) "いぬ" $b → string(6) "ねこ" $c → string(9) "すずめ" $d → string(12) "かわうそ"
PHP: list – Manual
連想配列のキーから自動的に変数を作る – extract()
extract() 関数を使用すると、連想配列のキーから自動的に新たに変数を作成し値を代入します。第二引数に何も指定しないと、同じキーが存在した場合に後から処理する値に上書きされてしまいます。第二引数には以下のような値を指定でき、重複した場合の動作を制御できます。(その他の値はマニュアルを参照下さい)
EXTR_SKIP | 重複した場合に先に存在する変数は上書きされない。そのキーと値は無視される。 |
---|---|
EXTR_PREFIX_SAME | 重複があった場合は第三引数で指定した文字列を接頭詞として付けて変数を作る。 |
EXTR_PREFIX_ALL | 新たに作るすべての変数に第三引数で指定した接頭詞をつける。 |
EXTR_PREFIX_INVALID | 無効または数値の変数名に第三引数で指定した接頭詞をつける。 |
参考:PHP の extract 関数は危険という話 – まちゅダイアリー(2008-09-06)
連想配列 $array のキーを変数名にして自動的に変数をつくる。
$array = array( 'a' => 'いぬ', 'b' => 'ねこ', 'c' => 'すずめ', 'd' => 'かわうそ'); extract($array); //↓結果 キーが新たに変数として作られ、そこへ値が入る $a → string(6) "いぬ" $b → string(6) "ねこ" $c → string(9) "すずめ" $d → string(12) "かわうそ"
連想配列 $array のキーを変数名にして自動的に変数をつくり、重複する変数名には接頭詞「ex」をつける。
$value = 'しばいぬ'; $array = array( 'value' => 'いぬ', 'b' => 'ねこ', 'c' => 'かわうそ', 'd' => 'すずめ'); extract($array, EXTR_PREFIX_SAME, "ex"); EXTR_PREFIX_SAME を第二引数に設定する //↓結果 $value → string(6) "しばいぬ" $ex_value → string(6) "いぬ" $b → string(6) "ねこ" $c → string(9) "すずめ" $d → string(12) "かわうそ"
PHP: extract – Manual
No Comments & Tracbacks