配列はキーとその値を持った組み合わせの集まりです。
配列に値を代入する時、キーを省略すると配列の個数+1がキーとなります。
下の例の中の「print_r」は変数の情報を返す関数です。
ソースコード
print "<pre>";
$a1 = array("Sunday", "Monday", "Tuesday");
$a2[0] = "Sunday";
$a2[1] = "Monday";
$a2[2] = "Tuesday";
$a3 = array(0 => "Sunday", 1 => "Monday", 2 => "Tuesday");
print "--- \$a1 ---\n";
print_r($a1);
print "--- \$a2 ---\n";
print_r($a2);
print "--- \$a3 ---\n";
print_r($a3);
print "</pre>";
出力結果
--- $a1 ---
Array
(
[0] => Sunday
[1] => Monday
[2] => Tuesday
)
--- $a2 ---
Array
(
[0] => Sunday
[1] => Monday
[2] => Tuesday
)
--- $a3 ---
Array
(
[0] => Sunday
[1] => Monday
[2] => Tuesday
)
$1、$2、$3は全て同じ内容です。
$1の場合はキーを省略しているので、0から始まる配列になります。
連想配列
文字列をキーにすることも出来ます。特にその場合の配列を連想配列といいます。
ソースコード
print "<pre>";
$a4["one"] = 1;
$a4["two"] = 2;
$a4["three"] = 3;
$a5 = array("one" => 1, "two" => 2, "three" => 3);
print "--- \$a4 ---\n";
print_r($a4);
print "--- \$a5 ---\n";
print_r($a5);
print "</pre>";
出力結果
--- $a4 ---
Array
(
[one] => 1
[two] => 2
[three] => 3
)
--- $a5 ---
Array
(
[one] => 1
[two] => 2
[three] => 3
)
数値のキーと文字列のキーを混在させることも出来ます。
ソースコード
print "<pre>";
$a6[0] = "Sunday";
$a6[1] = "Monday";
$a6[2] = "Tuesday";
$a6["one"] = 1;
$a6["two"] = 2;
$a6["three"] = 3;
$a6["1"] = "1";
$a6["01"] = "01";
$a6[] = "?????";
print "</pre>";
出力結果
--- $a6 ---
Array
(
[0] => Sunday
[1] => 1
[2] => Tuesday
[one] => 1
[two] => 2
[three] => 3
[01] => 01
[3] => ?????
)
この例でわかるように、$a6[1] と $a6["1"] は同じものを示しますが $a6["01"] とは区別されます。
最終行の、$a6[] はそれまでの整数キーの最大が 2 なので、その +1 である 3 がキーとなっています。
よく使う配列関数
| count |
・・・ |
配列の要素数を返す |
| array_flip |
・・・ |
キーと値を入れ替えた配列を返す |
| array_keys |
・・・ |
キーだけの配列を返す |
| array_values |
・・・ |
値だけの配列を返す |
| array_shift |
・・・ |
配列の最初の要素を削除して、その削除した要素の値を返す |
| array_pop |
・・・ |
配列の最後の要素を削除して、その削除した要素の値を返す |
| array_unshift |
・・・ |
第2引数以降で渡された変数を配列の最初に追加して、追加された配列の要素数を返す |
| array_push |
・・・ |
第2引数以降で渡された変数を配列の最後に追加して、追加された配列の要素数を返す |
| array_reverse |
・・・ |
逆順にした配列を返す |
| sort |
・・・ |
配列を昇順にソートする |
| rsort |
・・・ |
配列を降順にソートする |
| ksort |
・・・ |
配列のキーを昇順にソートする |
| asort |
・・・ |
連想配列のキーと値の関係を保持しながら連想配列を昇順にソートする |
| arsort |
・・・ |
連想配列のキーと値の関係を保持しながら連想配列を降順にソートする |
| compact |
・・・ |
変数名とその値から配列を作成する |
| extract |
・・・ |
配列を変数に展開する |
ソースコード
print "<pre>";
$a1 = array(0 => "Sunday", "one" => 1, 1 => "Monday", "two" => 2, 2 => "Tuesday", "three" => 3);
print "--- 元となる配列 ---<br>";
print_r($a1);
//count
$cnt = count($a1);
print "--- count ---<br>";
print "\$a1の要素数は${cnt}です。\n\n";
//array_flip
$a2 = array_flip($a1);
print "--- array_flip ---<br>";
print_r($a2);
//array_keys
$a2 = array_keys($a1);
print "--- array_keys ---<br>";
print_r($a2);
//array_values
$a2 = array_values($a1);
print "--- array_values ---<br>";
print_r($a2);
//array_shift
$a2 = array_shift($a1);
print "--- array_shift ---<br>";
print_r($a1);
print "削除された値 = " . $a2 . "\n";
//array_pop
$a2 = array_pop($a1);
print "--- array_pop ---<br>";
print_r($a1);
print "削除された値 = " . $a2 . "\n";
//array_unshift
$a2 = array_unshift($a1, "Sunday", 1);
print "--- array_unshift ---<br>";
print_r($a1);
print "要素数 = " . $a2 . "\n";
//array_push
$a2 = array_push($a1, "Wednesday", 4);
print "--- array_push ---<br>";
print_r($a1);
print "要素数 = " . $a2 . "\n";
//array_reverse
$a2 = array_reverse($a1);
print "--- array_reverse ---<br>";
print_r($a2);
//sort
$a1 = array(0 => "Sunday", "one" => 1, 1 => "Monday", "two" => 2, 2 => "Tuesday", "three" => 3);
sort($a1);
print "--- sort ---<br>";
print_r($a1);
//rsort
$a1 = array(0 => "Sunday", "one" => 1, 1 => "Monday", "two" => 2, 2 => "Tuesday", "three" => 3);
arsort($a1);
print "--- arsort ---<br>";
print_r($a1);
//ksort
$a1 = array(0 => "Sunday", "one" => 1, 1 => "Monday", "two" => 2, 2 => "Tuesday", "three" => 3);
/*
第2引数(省略可)
・SORT_REGULAR - 通常通りに項目を比較
・SORT_NUMERIC - 数値的に項目を比較
・SORT_STRING - 文字列として項目を比較
*/
ksort($a1, SORT_STRING);
print "--- ksort ---<br>";
print_r($a1);
//asort
$a1 = array("one" => 1, "two" => 2, "three" => 3);
asort($a1);
print "--- asort ---<br>";
print_r($a1);
//arsort
arsort($a1);
print "--- arsort ---<br>";
print_r($a1);
//compact
$one = 1;
$two = 2;
$three = 3;
$a1 = compact("three", "two", "one");
print "--- compact ---<br>";
print_r($a1);
//extract
$a1 = array("one" => 1, "two" => 2, "three" => 3);
/*
第2引数(省略可)
EXTR_OVERWRITE 既に変数が存在する場合、存在する変数が上書きされる。
EXTR_SKIP 既に変数が存在する場合、存在する変数は上書きされない。
EXTR_PREFIX_SAME 既に変数が存在する場合、第3引数を前につけた 新しい変数となる。
EXTR_PREFIX_ALL 全ての変数の前に 第3引数を付ける。
EXTR_PREFIX_INVALID 無効または数値の変数名のみに接頭辞に第3引数を付ける。
*/
$one = "aaaaa";
extract($a1, EXTR_PREFIX_SAME, "pre");
print "--- extract ---<br>";
print "one = $one <br>";
print "pre_one = $pre_one <br>";
print "two = $two <br>";
print "three = $three <br>";
print "</pre>";
出力結果
--- 元となる配列 ---
Array
(
[0] => Sunday
[one] => 1
[1] => Monday
[two] => 2
[2] => Tuesday
[three] => 3
)
--- count ---
$a1の要素数は6です。
--- array_flip ---
Array
(
[Sunday] => 0
[1] => one
[Monday] => 1
[2] => two
[Tuesday] => 2
[3] => three
)
--- array_keys ---
Array
(
[0] => 0
[1] => one
[2] => 1
[3] => two
[4] => 2
[5] => three
)
--- array_values ---
Array
(
[0] => Sunday
[1] => 1
[2] => Monday
[3] => 2
[4] => Tuesday
[5] => 3
)
--- array_shift ---
Array
(
[one] => 1
[0] => Monday
[two] => 2
[1] => Tuesday
[three] => 3
)
削除された値 = Sunday
--- array_pop ---
Array
(
[one] => 1
[0] => Monday
[two] => 2
[1] => Tuesday
)
削除された値 = 3
--- array_unshift ---
Array
(
[0] => Sunday
[1] => 1
[one] => 1
[2] => Monday
[two] => 2
[3] => Tuesday
)
要素数 = 6
--- array_push ---
Array
(
[0] => Sunday
[1] => 1
[one] => 1
[2] => Monday
[two] => 2
[3] => Tuesday
[4] => Wednesday
[5] => 4
)
要素数 = 8
--- array_reverse ---
Array
(
[0] => 4
[1] => Wednesday
[2] => Tuesday
[two] => 2
[3] => Monday
[one] => 1
[4] => 1
[5] => Sunday
)
--- sort ---
Array
(
[0] => Monday
[1] => Sunday
[2] => Tuesday
[3] => 1
[4] => 2
[5] => 3
)
--- arsort ---
Array
(
[three] => 3
[two] => 2
[one] => 1
[2] => Tuesday
[0] => Sunday
[1] => Monday
)
--- ksort ---
Array
(
[0] => Sunday
[1] => Monday
[2] => Tuesday
[one] => 1
[three] => 3
[two] => 2
)
--- asort ---
Array
(
[one] => 1
[two] => 2
[three] => 3
)
--- arsort ---
Array
(
[three] => 3
[two] => 2
[one] => 1
)
--- compact ---
Array
(
[three] => 3
[two] => 2
[one] => 1
)
--- extract ---
one = aaaaa
pre_one = 1
two = 2
three = 3
|