PHP学習ノートの配列編

9852 ワード

一、配列をどのように定義するか:PHPで配列を作成するには主に2つの方法があります.次に、配列を作成する方法を見てみましょう.
(1)各要素に直接値を割り当てる方法で配列を作成する.
形式:$arrayname[key]=value;
ここでarraynameは配列の名前、keyは配列の要素のキー、valueは要素の値です.キーは0,1,2,3のような数字でも文字列でもよい.次のようになります.
 
  
1 2 // 1,2,3
3 echo '

$array1 :

';
4 $array1[1]='a';
5 $array1[2]='b';
6 $array1[3]='c';
7 print_r($array1);
8
9 // , 0
10 echo '

$array2 :

';
11 $array2[]='a';
12 $array2[]='b';
13 $array2[]='c';
14 print_r($array2);
15
16 //
17 echo '

$array3 :

';
18 $array3['one']='a';
19 $array3['two']='b';
20 $array3['three']='c';
21 print_r($array3);
22 ?>

以上のコードが出力した結果は:
配列$array 1のキー値は、次のとおりです.
Array ( [1] => a [2] => b [3] => c )
配列$array 2のキー値は、次のとおりです.
Array ( [0] => a [1] => b [2] => c )
配列$array 3のキー値は、次のとおりです.
Array ( [one] => a [two] => b [three] => c )
(2)array関数で配列を直接定義する.
フォーマット:$arrayname=array(key 1=>value 1、key 2=>value 2);
ここでarraynameは配列名、key 1、key 2は配列のキーであり、value 1、value 2はそれぞれkey 1とkey 2の値に対応する.
次のコードの例を示します.
 
  
1 2 //
3 $array6=array(1=>'a',2=>'b',3=>'c');
4 echo '

$array6 :

';
5 print_r($array6);
6 //
7 $array7=array('one'=>'a','two'=>'b','three'=>'c');
8 echo '

$array7 :

';
9 print_r($array7);
10 //
11 $array8=array('a','b','c');
12 echo '

$array8 :

';
13 print_r($array8);
14 ?>

結果は次のとおりです.
配列$array 6のキーと値は、次のとおりです.
Array ( [1] => a [2] => b [3] => c )
配列$array 7のキーと値は、次のとおりです.
Array ( [one] => a [two] => b [three] => c )
配列$array 8のキーと値は、次のとおりです.
Array ( [0] => a [1] => b [2] => c )
注意:
1>配列内の要素に値をキーとして指定した場合、その要素の後にあるすべての要素のデフォルトキーは、指定した値の自己増加の非繰返し値です.
単純に字面を見ると意味がわかりにくいので、例を見てみましょう.
次のコード:
 
  
1 2 // $array4 2, 2、3
3 $array4[2]='a';
4 $array4[]='b';
5 $array4[]='c';
6 // 4 10, 5、6
7 $array4[10]='d';
8 $array4[]='e';
9 $array4[]='f';
10 // 7 9, 8、9
11 $array4[9]='g';
12 $array4[]='h';
13 $array4[]='i';
14 //
15 print_r($array4);
16 ?>

結果は次のとおりです.
Array ( [2] => a [3] => b [4] => c [10] => d [11] => e [12] => f [9] => g [13] => h [14] => i )
説明:7番目の要素のキーは9で、通常は8番目の要素間は10であるべきですが、キー10、11、12の前に要素が使用されていた場合、8番目の要素のキーは13です.
2>数字でも文字列でも配列要素としてのキーは、その要素のキーだけを表しており、その要素の配列中の位置とは直接関係なく、C#などの言語における配列と最大の違いである.次に例を挙げます.
次のコード:
 
  
1 2 $array5['one']='a';
3 if(!isset($array5[0]))
4 {
5 echo '

$array5[0] !

';
6 }
7 ?>

結果は次のとおりです.
$array 5[0]は空です!
説明:$array 5[0]は、配列内のキーが数値0の要素の値(C#などの言語が配列の最初の要素を表すわけではない)を表し、配列はキーが文字列「one」という要素のみであり、要素のないキーは0であるため、$array 5[0]は空である.
3>PHPは、インデックス配列(indexed array)と結合配列(associative array)の2つの配列をサポートし、前者は数字をキーとし、後者は文字列をキーとして使用します.配列を作成するときに、数値と文字列を要素として使用するキーをブレンドできます.次のコードを示します.
 
  
1 2 $array9=array(1=>'a', 2=>'b', 'one'=>'c', 'two'=>'d', 'e', 'f', 'g');
3 echo '

$array9 :

';
4 print_r($array9);
5 ?>

結果は次のとおりです.
配列$array 9のキーと値は、次のとおりです.
Array ( [1] => a [2] => b [one] => c [two] => d [3] => e [4] => f [5] => g )
4>変数は配列のキーとしてもよく、以下のようになります.
 
  
1 2 $key1='one';
3 $key2='two';
4 $key3='three';
5 $array10[$key1]='a';
6 $array10[$key2]='b';
7 $array10[$key3]='c';
8 echo '

$array10 :

';
9 print_r($array10);
10 ?>

結果は次のとおりです.
配列$array 10のキーと値は、次のとおりです.
Array ( [one] => a [two] => b [three] => c )
二、配列の要素へのアクセス方法
1、一般的な方法
配列内の要素を取得するには、配列名にカッコを付けてキーを付けるだけで、呼び出し方法は次のようになります.
$arrayname[key];
2、foreach結果を用いて配列を巡る
各配列要素にアクセスするには、foreachループを使用します.
Foreach($array as $value)
{
//Do something with $value
}
Foreachループは、配列$arrayの各要素を反復し、各要素の値を$value変数に与えます.次に例を示します.
 
  
1 2 $array11=array('a','b','c','d','e');
3 echo '

$array11 :';
4 foreach($array11 as $value)
5 {
6 echo $value.',';
7 }
8 echo '

';
9 ?>

出力結果は次のとおりです.
配列$array 11の値は、a,b,c,d,eであり、
foreachを使用すると、配列要素のキーと値にも同時にアクセスできます.
Foreach($array as $key => $value)
{
//Do something with $key and $value
}
ここで、$keyは各要素のキー、$value要素の値であり、次のコードはforeach構造を使用してドロップダウン・ボックスを作成する方法を示します.
 
  
1 2 $array12=array('one'=>1,'two'=>2,'three'=>3,'four'=>4,'five'=>5);
3 echo '';
9 ?>

3、list関数を使用して配列にアクセスする
List関数は配列中の値をいくつかの変数に与え、その関数構文は以下の通りである.
Void list(mixed varname, mixed varname2……)
次の例を示します.
 
  
1 2 $array13=array('red','blue','green');
3 //
4 list($flag1,$sky1,$grassland1)=$array13;
5 echo "$flag1 $sky1 $grassland1";
6 echo '
';
7 //
8 list($flag2,,$grassland2)=$array13;
9 echo "$flag2 $grassland2";
10 echo '
';
11 //
12 list(,,$grassland3)=$array13;
13 echo "$grassland3";
14 echo '
';
15 ?>

出力結果:
red blue green
red green
green
注:list()は、数値インデックスの配列にのみ使用でき、数値インデックスは0から開始する必要があります.
リスト関数は、まず配列中のキーが0の要素値を1番目の変数に割り当て、キーが1の要素値を2番目の変数に割り当てるので、リスト関数の変数の個数と位置は配列中の数値キーに対応しなければならず、リスト関数は文字列をキーとする配列要素にアクセスできません.次のようになります.
 
  
1 2 $array13=array(1=>'red','blue','green');
3 list($flag1,$sky1,$grassland1)=$array13;
4 echo '$flag1 :'.$flag1.'
';
5 echo '$sky1 :'.$sky1.'
';
6 echo '$grassland1 :'.$grassland1.'
';
7 ?>

出力結果は次のとおりです.
$flag 1の値は次のとおりです.
$sky 1の値は:red
$grassland 1の値はblueです.
説明:$flag 1の値は配列中のキーが0の要素値であるべきであるが、この配列の最初の要素は1をキーとし、キーが0の要素がないため、$flag 1の値は空であるため、後の$sky 1と$grassland 1の値も変化する.
4、each関数を使って配列にアクセスする
each関数は、配列内の現在のキー/値ペアを返し、配列ポインタを一歩前に移動します.注意はペアです.以下で詳細に説明します.関数構文:
array each ( array &$array )
array配列の現在のポインタ位置のキー/値ペアを返し、配列ポインタを前方に移動します.各キー値ペアは4つのユニットの配列として返され、キー値は0,1,key,valueの4つの要素である.要素0とkeyには配列ユニットのキー名が含まれ、1とvalueにはデータが含まれます.内部ポインタが配列の終端を越えた場合、each()はFALSEを返します.この中にはなぜeach関数に4つの下表があるのですか?実はeach関数はこの4つのインデックスを得るのは私たちが操作するのに便利なだけで、私たちは0,1をインデックスとしてもkey、valueをインデックスとしてもいいです.次のコードを参照してください.
 
  
1 2 $arr=array(" "," "," ");
3 echo " 0,1 :

";
4 $a=each($arr);
5 echo " \$arr :".$a['0'];
6 echo "
";
7 echo " \$arr :".$a['1'];
8 echo "

";
9 echo " key,value :

";
10 $b=each($arr);
11 echo " \$arr :".$b['key'];
12 echo "
";
13 echo " \$arr :".$b['value'];
14 ?>

次のように表示されます.
0,1をインデックスとして使用すると、次のようになります.
$arr配列のキーは0です.
$arr配列の値は、私が最初の値です.
key、valueをインデックスとすると、次のようになります.
$arr配列のキーは:1です.
$arr配列の値は、私が2番目の値です.
5、each関数とlist関数を結合して配列を遍歴し、以下の例を挙げる.
 
  
1 2 $array14=array('a' => 'apple', 'b' => 'banana', 'c' => 'cranberry');
3 while(list($key,$value) = each($array14))
4 {
5 echo "$key => $value
";
6 }
7 ?>

出力結果は次のとおりです.
a => apple b => banana c => cranberry
6、forループアクセス配列の使用
次の例を示します.
 
  
1 2 $array15=array('a','b','c','d','e','f');
3 for($i=0;$i4 {
5 echo ' :'.$array15[$i].'
';
6 }
7 ?>

出力結果:
配列要素:a
配列要素:b
配列要素:c
配列要素:d
配列要素:e
配列要素:f