PHP Walker サイトマップ | お問合せ | このサイトについて
 PHP ウォーカー
 
はじめに
PHP基本
・PHPタグについて
・コメントについて
・文字を表示させる(print、echo)
・変数について
・型について
・配列
・分岐1(if 〜 else)
・分岐2(switch)
・繰り返し1(while)
・繰り返し2(for)
・繰り返し3(foreach)
日付・時刻
関数

 配列

配列はキーとその値を持った組み合わせの集まりです。
配列に値を代入する時、キーを省略すると配列の個数+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



サイトポリシー | 新着情報 | 掲示板 | お問合せ
Copyright © エンジニアウォーカー All Rights Reserved.