今回触れるのは、配列の要素を変数にする方法を書いていきます。
配列を変数にするには、list(),extract()を使用します。
extract($配列名,変換方法,"プレフィックス");
extract()は、配列のキー名を変数名、
値を変数の値とする処理を行います。
キー値が「japan」「america」なら「$japan」「$america」という
変数ができます。
$country["japan"] なら
$japan という変数ができます。
extract()の()内の第2引数の指定は、既に使われいる変数名とキー名が
同じ場合、どのような名前を付けるかどうか指定します。
下記の表をご覧ください。
変換方法 | 内容 |
---|---|
EXTR_OVERWRITE | 重複があったとき、上書きする |
EXTR_SKIP | 重複があったとき、上書きしない |
EXTR_PREFIX_SAME | 重複があったとき、プレフィックスを付ける |
EXTR_PREFIX_ALL | 全てにプレフィックスをつける |
第3引数の指定はキー名の先頭に付す接頭辞(プレフィックス)を指定します。
「指定した値_」というプレフィックスが付すことができます。
たとえば、キーの値が「japan」「america」ある場合に「k」を指定すると、
「k_japan」「k_america」という変数ができます。
$country["japan"] なら
$k_japan という変数ができます。
配列のキーが数値である場合は、必ずプレフィックスを指定
しなければいけません。第2引数、第3引数の指定は省くことができます。
変数を配列にすることも可能です。
その際は、compact()を使います。
$配列名 = compact($変数名1,$変数名2,・・・・・);
サンプルコードの実行結果はこちら
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 |
<!doctype html> <html> <head> <meta charset="utf-8"> <title>配列のキーを変数にしたり、2つの配列を結合してみる</title> <link rel="stylesheet" href="../style.css"> </head> <body> <?php //配列を格納する $city = array("東京","大阪","京都","名古屋","千葉"); /* 配列を変数に変換する プレフィックス「c」をつけた変数名を使っています。 配列の添字が0,1・・・・なので、c_0,c_1・・・・・という 変数名を作成するように指定します。 */ extract($city, EXTR_PREFIX_ALL,"c"); //変換した変数を出力する echo $c_0 . "<br>"; echo $c_1 . "<br>"; echo $c_2 . "<br>"; echo $c_3 . "<br>"; echo $c_4 . "<br>"; echo "<br><hr><br>"; //変換した変数を今度は配列にまとめる $arrCity = compact("c_0","c_1","c_2","c_3","c_4"); foreach( $arrCity as $id => $value ){ echo "{$id}:{$value}<br>"; } echo "<br><hr><br>"; ?> <?php $city1 = array("東京","横浜","千葉"); $city2 = array("大阪","京都","奈良"); $arrCity = array_merge($city1,$city2); foreach( $arrCity as $i => $value ){ echo "{$i}:{$value}<br>"; } ?> </body> </html> |
配列を結合する
上記の通り2つの配列を結合することができます。
サンプルコードの47~54行目をみると、
2つの配列を用意しています。そのあと
array_merge()で結合しています。
$arrCity = array_merge($city1,$city2);
$配列名 = array_merge($配列名1,$配列名2,・・・・・・);
配列操作
配列に対する命令が上記以外にもあります。
名前 | 説明 |
---|---|
in_array(値,$配列名) | 配列に値があれば、trueを返す |
array_search(値,$配列名) | 配列に値があれば、キーを返す |
array_values($配列名) | 配列の値を添字を数値とした配列として返す |
array_keys($配列名) | 配列のキーを配列として返す |
array_flip($配列名) | 配列の値とキーを交換した配列を返す |
array_combine($配列名1,$配列名2) | 配列1の値をキー、配列2の値を値とする配列を帰す |
array_sum($配列名) | 配列の合計値を返す |
array_rand($配列名) | 配列からランダムな値を取得する |
array_intersect($配列名1,$配列名2) | 配列1と配列2の共通項を返す |
array_diff($配列名1,$配列名2) | 配列1、配列2の差分を返す |