UPDATE:2024年09月15日
PHPの配列の基本をマスターする【入門 初心者 向け】
目次 [閉じる]
配列とは
- 配列は複数の値をまとめたもの
- 配列はデータを「キー/値」のペアにしている
- 「キー/値」のペアになっているデータを配列の要素と言う
- 配列には順序があり要素が追加された順に並んでいる
- 配列にはすべてのデータ型の値を格納することが出来る
早速 配列を作って出力してみましょう!
PHP では、array()関数 や「 [・・・] (角括弧) 」を利用して配列を作成することができます。
array()関数 を使用して配列を作成する。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | <?php //array() を使用して配列を作成 //作成 $foods = array('そば', 'ラーメン', 'うどん'); //出力 echo $foods[0]."<br>\n"; echo $foods[1]."<br>\n"; echo $foods[2]."<br><br>\n"; //作成 $foods = array('soba' => 'そば', 'ramen' => 'ラーメン', 'udon' => 'うどん'); //出力 echo $foods['soba']."<br>\n"; echo $foods['ramen']."<br>\n"; echo $foods['udon']."<br><br>\n"; ?> |
ラーメン
うどん
そば
ラーメン
うどん
「 [・・・] (角括弧) 」を使用して配列を作成する。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | <?php //[ ] を使用して配列を作成 //作成 $fruits[] = 'リンゴ'; $fruits[] = 'バナナ'; $fruits[] = 'オレンジ'; //出力 echo $fruits[0]."<br>\n"; echo $fruits[1]."<br>\n"; echo $fruits[2]."<br><br>\n"; //作成 $fruits['apple'] = 'リンゴ'; $fruits['banana'] = 'バナナ'; $fruits['orange'] = 'オレンジ'; //出力 echo $fruits['apple']."<br>\n"; echo $fruits['banana']."<br>\n"; echo $fruits['orange']."<br><br>\n"; ?> |
バナナ
オレンジ
リンゴ
バナナ
オレンジ
こんな感じです! 配列 では、 array()関数 や「 [・・・] (角括弧) 」を利用して複数の値を扱います。それでは詳しい説明を進めていきます。
配列とは
配列とはPHPで扱うデータ型の1つで、複数の値をまとめたものです。(PHPのデータ型は、文字列型(string)、整数型(integer)、浮動小数点数型(float)、論理型(boolean)、配列型(array)、オブジェクト型(object)、リソース型(resource)、NULL(null)などがあります。)配列は配列型の変数、配列変数のことです。
配列はデータを「キー/値」のようにペアにして順序付きで管理します。キーは値に付けられた名前のようなものです。値は値そのものです。この「キー/値」のペアになっているデータを配列の要素と言います。配列には順序があり、要素が追加された順に並びます。
配列(配列型変数)は複数の値を扱う
プログラム上の容器である変数は全てのデータ型を扱えますが、「文字列」や「数値」などを変数に代入した場合、1つの値しか扱えません。つまり、文字列型や整数型、浮動小数点型、論理型などの変数では、格納されている値は1つです。ですが、配列型を利用することで複数の値を扱うことが出来ます。変数についてはこちらを参照下さい。
1 2 3 4 5 6 7 8 9 10 | <?php $var1 = '文字列';//変数(文字列型)$var1は1つの値の文字列 $var2 = 100;//変数(整数型)$var2は1つの値の整数値 $var3 = true;//変数(論理型)$var3は1つの値の論理値 $array = array('日本', 'アメリカ', 'イギリス');//変数(配列型)$arrayは3つの値の配列 var_dump($var1); echo "<br>\n"; var_dump($var2); echo "<br>\n"; var_dump($var3); echo "<br>\n"; var_dump($array); echo "<br>\n"; ?> |
int(100)
bool(true)
array(3) { [0]=> string(6) "日本" [1]=> string(12) "アメリカ" [2]=> string(12) "イギリス" }
実行結果を見てみると、配列(配列型の変数)$array には複数の値が格納されていることが分かります。var_dump()関数は、変数を展開して内容を確認する関数です。因みに格納されている値のデータ型も表示されていますね。文字列型はstring、整数型はint、配列型はarrayと表示されています。
配列の扱う値のデータ型
配列には様々なデータ型の値を格納することが出来ます。次のコードでは、配列に、文字列型(string)、整数型(integer)、浮動小数点数型(float)、論理型(boolean)、配列型(array)、オブジェクト型(object)、リソース型(resource)、NULL(null)の値を格納しています。var_dump()で配列の内容を確認すると、格納されている各要素のキー名、値、データ型が表示されます。以降で詳しく説明しますが、配列に配列を格納して入れ子構造(ネスト)にすることが出来ます。このような配列を2次元配列や3次元配列、または多次元配列などと言います。
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 | <?php //文字列型 $stringData = "文字列"; //整数型 $integerData = 10; //浮動小数点数型 $floatData = 0.15; //論理型 $boolData = true; //配列型 $arrayData = array(1,2,3); //オブジェクト型 class test{ } $objectData = new test(); //リソース型 $resourceData = fopen("1-1-1-48-txt.php", "r"); // 外部ファイルオープン //null型 $nullData = null; $allData = array();//初期化 //各値を格納する配列を作成 $allData = array( $stringData, $integerData, $floatData, $boolData, $arrayData, $objectData, $resourceData, $nullData ); //配列の内容をvar_dump()で確認する echo '<pre>'; var_dump($allData); echo '</pre>'; ?> |
[0]=>
string(9) "文字列"
[1]=>
int(10)
[2]=>
float(0.15)
[3]=>
bool(true)
[4]=>
array(3) {
[0]=>
int(1)
[1]=>
int(2)
[2]=>
int(3)
}
[5]=>
object(test)#1 (0) {
}
[6]=>
bool(false)
[7]=>
NULL
}
PHPでは配列に対して、要素の追加や削除、並び替え、検索、など、様々な操作が行えます!配列はプログラミング上必ず必要になる機能です。本ページでは、配列の宣言、作成、表示、操作、など多くの機能をご紹介いたします。
配列の種類 インデックス配列 と 連想配列
- インデックス配列(キーは0からの数値)
- 連想配列(キーは任意の文字列)
PHPには2種類の配列があります。 インデックス配列 と 連想配列 です。
インデックス配列の「キー」は 0 から付与される整数値です。連想配列の「キー」は任意の文字列です。
インデックス配列と連想配列の違いは「キー」が整数値か文字列かの違いだけです。PHPの内部ではすべての配列を連想配列として管理しています。
配列の宣言(作成)と値の格納
- 配列の初期化 $array = array();
- 「 [・・・] (角括弧) 」 で配列を作成
- array() 関数 で配列を作成
- 文字列の「キー」はクォートする
- 変数の「キー」はクォートする
- 負の値のキー $number[-8] = -8;
配列を作成するには、「 [・・・] (角括弧) 」を使用する場合とarray()関数を使用する場合があります。
(1) 配列の初期化
1 | $array = array();//初期化 |
とします。array() で配列を初期化できます。初期化された変数 $array は、変数名が array でデータ型が配列型の配列変数となります。要素数が 0 で、空の状態です。配列の入れ物です。このarray()は、配列を作成する際にも使用します。
var_dump()で配列 $array の内容を確認すると
1 2 | $array = array(); var_dump($array); |
array(0) と表示されます。配列型で要素が0個という意味です。
(2) 「 [・・・] (角括弧) 」を使用した配列の作成と値の格納
1 | $countries = array(); |
配列要素の「キー」を「 [・・・] (角括弧) 」で囲みます「 [キー] 」。この場合整数値 0 がキーです。
1 | $countries[0] |
代入演算子「 = 」を使用して配列に値を格納します。
1 | $countries[0] = 'アイスランド共和国'; |
配列変数「$countries」には要素が1つあり、その要素のキーは「0」で値は「アイスランド共和国」となります。
出力する際は、echo や print で、配列変数名とキー名を指定します。
1 2 3 4 5 6 | <?php $countries = array(); $countries[0] = 'アイスランド共和国'; echo $countries[0]."<br>\n"; print $countries[0]."<br>\n"; ?> |
アイスランド共和国
(3) 「 [・・・] (角括弧) 」でインデックス配列を作成
1 2 3 4 5 6 7 | <?php $countries = array();//初期化 $countries[0] = 'アイスランド共和国'; $countries[1] = 'アイルランド'; $countries[2] = 'アゼルバイジャン共和国'; echo $countries[0];//アイスランド共和国 ?> |
以下のようにキーの整数値を指定せず、「 [・・・] (角括弧) 」を空の状態で記述しても、要素は順次追加されていきます。キーの整数値は 0 から始まります。
1 2 3 4 5 6 7 | <?php $countries = array();//初期化 $countries[] = 'アイスランド共和国'; $countries[] = 'アイルランド'; $countries[] = 'アゼルバイジャン共和国'; echo $countries[2];//アゼルバイジャン共和国 ?> |
(4) 「 [・・・] (角括弧) 」で連想配列を作成
1 2 3 4 5 6 7 | <?php $mail = array();//初期化 $mail['suzuki'] = 'suzuki@mail.com'; $mail['yamada'] = 'yamada@mail.com'; $mail['sato'] = 'sato@mail.com'; echo $mail['yamada'];//yamada@mail.com ?> |
キー名を変数で指定することも可能です。キー名の変数は「"(ダブルクォート)」で囲み、変数展開させます。出力する際もキーの変数をクォートで囲み指定します。
1 2 3 4 5 6 7 8 9 | <?php //キー名用の変数 $jpn = 'japan'; //配列の作成 $capital = array();//初期化 $capital["$jpn"] = '東京'; echo $capital["$jpn"];//東京 ?> |
(5) array()関数でインデックス配列を作成
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | <?php //角括弧を使用してインデックス配列を作成 $countries = array();//初期化 $countries[0] = 'アイスランド共和国'; $countries[1] = 'アイルランド'; $countries[2] = 'アゼルバイジャン共和国'; //内容の確認 var_dump($countries); echo $countries[2];//アゼルバイジャン共和国 //array()関数を使用してインデックス配列を作成 $countries = array();//初期化 $countries = array('アイスランド共和国', 'アイルランド', 'アゼルバイジャン共和国'); //内容の確認 var_dump($countries); echo $countries[2];//アゼルバイジャン共和国 ?> |
アイルランド
array(3) { [0]=> string(27) "アイスランド共和国" [1]=> string(18) "アイルランド" [2]=> string(33) "アゼルバイジャン共和国" }
アイルランド
結果は同じです。array()関数で配列を作成する際、値だけを指定すると、自動でキーを整数値 0 から順次付与するインデックス配列になります。
(6) array()関数で連想配列を作成
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | <?php //角括弧を使用して連想配列を作成 $mail = array();//初期化 $mail['suzuki'] = 'suzuki@mail.com'; $mail['yamada'] = 'yamada@mail.com'; //内容の確認 var_dump($mail); //array()関数を使用して連想配列を作成 $mail = array();//初期化 $mail= array ( 'suzuki' => 'suzuki@mail.com', 'yamada' => 'yamada@mail.com' ); //内容の確認 var_dump($mail); ?> |
array(2) { ["suzuki"]=> string(15) "suzuki@mail.com" ["yamada"]=> string(15) "yamada@mail.com" }
結果は同じです。
array()関数を使用した連想配列の作成でも、キー名に変数を指定することができます。キー名の変数は「"(ダブルクォート)」で囲み、変数展開させます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | <?php //キー名用変数 $manager = 'suzuki'; $director = 'yamada'; //角括弧を使用して連想配列を作成 $mail = array();//初期化 $mail["$manager"] = 'suzuki@mail.com'; $mail["$director"] = 'yamada@mail.com'; //内容の確認 var_dump($mail); //array()関数を使用して連想配列を作成 $mail = array();//初期化 $mail = array ( "$manager" => 'suzuki@mail.com', "$director" => 'yamada@mail.com' ); //内容の確認 var_dump($mail); ?> |
array(2) { ["suzuki"]=> string(15) "suzuki@mail.com" ["yamada"]=> string(15) "yamada@mail.com" }
(7) array()関数で連想配列を作成 キーを省略
1 2 3 4 5 6 7 8 9 10 11 12 13 | <?php $number = array(); $number = array ( 1 => 'one', 'two', 'three', 'four', 'five', ); var_dump($number); echo $number[5];//five ?> |
(8) 配列の値の追加
1 2 3 4 5 6 | <?php $name = array();//初期化 $name = array('arai','ito','sato'); $name[] = 'shida'; echo $name[3]; ?> |
(9) 配列の値の上書き
1 2 3 4 5 6 7 8 9 10 11 | <?php $user = array();//初期化 $user[1] = 'saito'; $user[1] = 'suzuki'; $mail['suzuki'] = 'suzuki@mail.com'; $mail['suzuki'] = 'KnjiSuzuki@mail.com'; echo $user[1]; echo $mail['suzuki']; ?> |
KnjiSuzuki@mail.com
(10) 負の値のキー
1 2 3 4 | <?php $number[-8] = -8; echo $number[-8]; ?> |
(11) キーのキャスト(型変換)
- 10 進数の 整数型(int) として妥当な形式の 文字列型(string) は、数値の前に + 記号がついていない限り、整数型にキャストされます。 つまり、キーに "8" を指定すると、実際には 8 として格納されるということです。一方 "08" はキャストされません。これは十進数として妥当な形式ではないからです。
- 浮動小数点型(floats) もまた 整数型(int) にキャストされます。つまり、小数部分は切り捨てられるということです。たとえばキーに 8.7 を指定すると、実際には 8 として格納されます。
- 論理型(bool) も 整数型(int) にキャストされます。つまり、 キーに true を指定すると実際には 1 として格納され、 同様にキーを false とすると実際には 0 となります。
- Null は空文字列にキャストされます。つまり、キーに null を指定すると、実際には "" として格納されます。
- 配列型(array) や 文字列型(object) は、キーとして使えません。 キーとして使おうとすると Illegal offset type という警告が発生します。
配列へのアクセス(表示)
- 文字列の「キー」はクォートする
- 変数の「キー」はクォートする
配列の値にアクセス
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | <?php //配列の作成 $countries = array();//初期化 $countries[0] = 'アイスランド共和国'; $countries[1] = 'アイルランド'; $countries[2] = 'アゼルバイジャン共和国'; $mail = array();//初期化 $mail['suzuki'] = 'suzuki@mail.com'; $mail['yamada'] = 'yamada@mail.com'; $mail['sato'] = 'sato@mail.com'; //配列へのアクセス echo $countries[2]."<br>\n"; echo $mail['sato']."<br>\n"; ?> |
sato@mail.com
文字列の「キー」はクォートする
1 2 3 4 5 6 7 8 9 10 11 12 | <?php //定数を定義 define('key', 100); //連想配列のキーが定数の値となっている $ary[key] = '定数がキー名'; //連想配列のキーが文字列となっている $ary['key'] = '文字列がキー名'; //echoで出力 echo $ary[100]; echo '<br>'; echo $ary['key']; ?> |
文字列がキー名
配列のキーを変数にする場合はクォートする
1 2 3 4 5 | <?php $key = 'keyname'; $ary['keyname'] = '変数がキー名'; echo $ary["$key"]; ?> |
多次元配列
「 [ ](角括弧) 」で多次元配列を作成する
「 [ ](角括弧) 」を[][][]と連ねることで、多次元配列を作成することが可能です。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | <?php $users = array();//配列初期化 $users[1]['name'] = 'suzuki'; $users[1]['mail'] = 'suzuki@mail.com'; $users[2]['name'] = 'saitou'; $users[2]['mail'] = 'saitou@mail.com'; $users[3]['name'] = 'tanaka'; $users[3]['mail'] = 'tanaka@mail.com'; echo $users[1]['name'].'<br>'; echo $users[1]['mail'].'<br>'; echo $users[2]['name'].'<br>'; echo $users[2]['mail'].'<br>'; echo $users[3]['name'].'<br>'; echo $users[3]['mail'].'<br>'; ?> |
suzuki@mail.com
saitou
saitou@mail.com
tanaka
tanaka@mail.com
配列のキー名は値へアクセスする際の住所のようなものです。複雑な多次元配列でも最後に取り出す値は1つです。
例えば
1 2 3 4 5 6 7 | <?php //$schoolchild = array();//初期化 $schoolchild['grade6']['class1']['boy'][3]['no'] = 3; $schoolchild['grade6']['class1']['boy'][3]['name'] = 'arai'; $schoolchild['grade6']['class1']['boy'][3]['mail'] = 'arai@mail.com'; echo $schoolchild['grade6']['class1']['boy'][3]['name']; ?> |
配列へのアクセスを日本語にすると、$schoolchild という配列の
[6年][1組][男の子][3番][番号]は 3
[6年][1組][男の子][3番][名前]は arai
[6年][1組][男の子][3番][メール]は arai@mail.com
というふうに考えます。
多次元配列のインデックス配列をarray()で作成する
array()を入れ子にすることで多次元配列を作成できます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | <?php //array()を入れ子にして多次元配列を作成 //各要素は「,(カンマ)」で区切ります。 //キーを指定しないで値だけ並べて指定した場合、自動で数値キーのインデックスが割り振られます。 $aks = array();//配列初期化 $aks = array ( array('あ', 'い', 'う', 'え' ,'お'), array('か', 'き', 'く', 'け' ,'こ'), array('さ', 'し', 'す', 'せ' ,'そ') ); //配列の内容を表示 echo $aks[0][0].'<br>'; echo $aks[0][1].'<br>'; echo $aks[1][0].'<br>'; echo $aks[1][1].'<br>'; echo $aks[2][0].'<br>'; echo $aks[2][1].'<br>'; ?> |
い
か
き
さ
し
入れ子用の配列変数を事前に作成して多次元配列を作成します。上記の例と内容は同じです。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | <?php //入れ子用の配列を作成 $a = array();$k = array();$s = array();//配列初期化 $a = array('あ', 'い', 'う', 'え' ,'お'); $k = array('か', 'き', 'く', 'け' ,'こ'); $s = array('さ', 'し', 'す', 'せ' ,'そ'); //多次元配列を作成。array()の中にarray()で作成した配列変数を格納 $aks = array();//配列初期化 $aks = array($a, $k, $s); //配列の内容を表示 echo $aks[0][3].'<br>'; echo $aks[0][4].'<br>'; echo $aks[1][3].'<br>'; echo $aks[1][4].'<br>'; echo $aks[2][3].'<br>'; echo $aks[2][4].'<br>'; ?> |
お
け
こ
せ
そ
多次元配列の連想配列をarray()で作成する
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | <?php //配列初期化 $a = array();$k = array();$s = array();$aks = array(); //配列作成 $a = array('first' => 'あ', 'second' => 'い', 'third' => 'う', 'forth' => 'え' ,'fifth' => 'お'); $k = array('first' => 'か', 'second' => 'き', 'third' => 'く', 'forth' => 'け' ,'fifth' => 'こ'); $s = array('first' => 'さ', 'second' => 'し', 'third' => 'す', 'forth' => 'せ' ,'fifth' => 'そ'); $aks = array('recodeA' => $a, 'recodeK' => $k, 'recodeS' => $s); //配列の展開 echo $aks['recodeA']['first'].'<br>'; echo $aks['recodeA']['fifth'].'<br>'; echo $aks['recodeK']['first'].'<br>'; echo $aks['recodeK']['fifth'].'<br>'; echo $aks['recodeS']['first'].'<br>'; echo $aks['recodeS']['fifth'].'<br>'; ?> |
お
か
こ
さ
そ
後述する foreach文 でも説明しますが、要素数が多く階層化されている配列変数は foreach文 で展開すると便利です。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | <?php //配列初期化 $a = array();$k = array();$s = array();$aks = array(); $a = array('first' => 'あ', 'second' => 'い', 'third' => 'う', 'forth' => 'え' ,'fifth' => 'お'); $k = array('first' => 'か', 'second' => 'き', 'third' => 'く', 'forth' => 'け' ,'fifth' => 'こ'); $s = array('first' => 'さ', 'second' => 'し', 'third' => 'す', 'forth' => 'せ' ,'fifth' => 'そ'); $aks = array('recodeA' => $a, 'recodeK' => $k, 'recodeS' => $s); //foreach文で配列のキーと値を展開 foreach ($aks as $key => $value) { echo "■{$key}<br>\n"; foreach ($value as $key2 => $value2) { echo " 【 ".$key2." 】:".$value2."<br>\n"; } } ?> |
【 first 】:あ
【 second 】:い
【 third 】:う
【 forth 】:え
【 fifth 】:お
■recodeK
【 first 】:か
【 second 】:き
【 third 】:く
【 forth 】:け
【 fifth 】:こ
■recodeS
【 first 】:さ
【 second 】:し
【 third 】:す
【 forth 】:せ
【 fifth 】:そ
配列操作
配列の大きさを取得
1 2 3 4 5 | <?php $ary = array('Tokyo', 'Kanagawa', 'Saitama'); $size = count($ary); echo $size; ?> |
範囲を指定して配列を作成
1 2 3 4 5 6 | <?php $number = range(3, 6); print_r($number); $abc = range('a', 'f'); print_r($abc); ?> |
Array ( [0] => a [1] => b [2] => c [3] => d [4] => e [5] => f )
その他の配列操作については、こちらをご覧下さい。
様々な配列操作
配列検索
配列ソート
その他
配列と変数の変換
- extract()関数で配列を変数に変換
extract()関数で配列を変数に変換する
1 2 3 4 5 | <?php $user = array('name' => '鈴木','mail' => 'suzuki@mail.com','sex' => '男'); extract($user); echo "$name $mail $sex"; ?> |
この関数を使用した場合、生成する変数名と同じ変数名が存在していた場合、既存の変数を上書きします。
それを避けるために以下のように引数を追加設定すると変数の衝突を防ぐことが出来ます。
1番目の引数:連想配列
2番目の引数:EXTR_PREFIX_ALL
3番目の引数:同じ変数名が存在していた場合、生成する変数名の先頭に追加する文字列
1 2 3 4 5 | <?php $user = array('name' => '鈴木','mail' => 'suzuki@mail.com','sex' => '男'); extract($user, EXTR_PREFIX_ALL, 'pre'); echo "$pre_name $pre_mail $pre_sex"; ?> |
配列の展開 foreach文、for文、while文
- foreach構文を利用して配列を展開
配列へのアクセスの説明で、配列変数名とキー名を直接指定して配列の値を出力しましたが、配列は要素数が多く階層構造になることが多いでしょう。そのような場合、foreach文などのループ処理で配列の要素を展開する必要があります。
foreach構文を利用して配列を展開する
foreach文は配列の並び順に従って順番に処理します。並び順は要素の追加された順です。
foreach(配列 as $value){
文
文
}
値とキーを取得
foreach(配列 as $key => $value){
文
文
}
foreach文で配列の値を展開
配列をループ処理して各配列要素の値を echo で表示させています。
1 2 3 4 5 6 7 | <?php $array = array();//初期化 $array = array(1, 2, 3, 4, 5);//配列の作成 //foreach文で展開 foreach ($array as $value){ echo '現在の配列要素の値は[ '.$value.' ]です。<br>'; }?> |
現在の配列要素の値は[ 2 ]です。
現在の配列要素の値は[ 3 ]です。
現在の配列要素の値は[ 4 ]です。
現在の配列要素の値は[ 5 ]です。
foreach文で配列のキーと値の両方を展開
配列をループ処理して各配列要素のキーと値を echo で表示させています。
1 2 3 4 5 6 7 8 9 10 11 | <?php $array = array();//初期化 $array = array( "name" => 'WEPICKS!', "url" => 'https://wepicks.net', "mail" => 'info@wepicks.net' ); foreach ($array as $key => $value) { echo '現在の配列要素のキーは[ '.$key.' ]で値は[ '.$value.' ]です。<br>'; } ?> |
現在の配列要素のキーは[ url ]で値は[ https://wepicks.net ]です。
現在の配列要素のキーは[ mail ]で値は[ info@wepicks.net ]です。
foreach文で二次元配列のキーと値の両方を展開
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 | <?php $a = array();//初期化 $a = array( "name" => 'suzuki', "mail" => 'suzuki@wepicks.net', "age" => 18 ); $b = array();//初期化 $b = array( "name" => 'yamada', "mail" => 'yamada@wepicks.net', "age" => 35 ); $c = array();//初期化 $c = array( "name" => 'sato', "mail" => 'sato@wepicks.net', "age" => 23 ); $member = array();//初期化 //配列の作成 $member['Aクラス'] = $a; $member['Bクラス'] = $b; $member['Cクラス'] = $c; //foreach文で配列のキーと値を展開 foreach ($member as $key => $value) { echo "■{$key}<br>\n"; foreach ($value as $key2 => $value2) { echo " 【 ".$key2." 】:".$value2."<br>\n"; } } ?> |
【 name 】:suzuki
【 mail 】:suzuki@wepicks.net
【 age 】:18
■Bクラス
【 name 】:yamada
【 mail 】:yamada@wepicks.net
【 age 】:35
■Cクラス
【 name 】:sato
【 mail 】:sato@wepicks.net
【 age 】:23
for文 や while文 を利用して配列を展開する
インデックス配列を展開するのに for文 や while文 が利用できます。
for文でインデックス配列の値を展開
文
文
}
1 2 3 4 5 6 7 8 | <?php $foods = array();//初期化 $foods = array('そば', 'ラーメン', 'うどん', '焼きそば', 'そーめん'); $count = count($foods);//配列の要素数をカウント for($i=0; $i<$count; ++$i){ echo $foods[$i]."<br>\n"; } ?> |
ラーメン
うどん
焼きそば
そーめん
while文でインデックス配列の値を展開
文
文
}
1 2 3 4 5 6 7 8 9 10 | <?php $foods = array();//初期化 $foods = array('そば', 'ラーメン', 'うどん', '焼きそば', 'そーめん'); $count = count($foods);//配列の要素数をカウント $i = 0; while($i < $count){ echo $foods[$i]."<br>\n"; ++$i; } ?> |
ラーメン
うどん
焼きそば
そーめん
サンプルコード
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 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 | <h3>配列の初期化</h3> <?php $array = array(); ?> <br><br> <h3>「 [・・・] (角括弧) 」で配列の作成と値の代入</h3> <?php $countries = array();//初期化 $countries[0] = 'アイスランド共和国'; echo $countries[0]; ?> <br><br> <h3>「 [・・・] (角括弧) 」を使用してインデックス配列の作成と値の代入</h3> <?php $countries = array();//初期化 $countries[0] = 'アイスランド共和国'; $countries[1] = 'アイルランド'; $countries[2] = 'アゼルバイジャン共和国'; echo $countries[0].'<br>'; echo $countries[1].'<br>'; echo $countries[2].'<br>'; ?> <br><br> <h3>「 [・・・] (角括弧) 」を使用して連想配列の作成と値の代入</h3> <?php $mail = array();//初期化 $mail['suzuki'] = 'suzuki@mail.com'; $mail['yamada'] = 'yamada@mail.com'; echo $mail['suzuki'].'<br>'; echo $mail['yamada'].'<br>'; ?> <br><br> <h3>array()関数を使用してインデックス配列を作成</h3> <?php $countries = array();//初期化 $countries = array('アイスランド共和国', 'アイルランド', 'アゼルバイジャン共和国'); echo $countries[0].'<br>'; echo $countries[1].'<br>'; echo $countries[2].'<br>'; ?> <br><br> <h3>array()関数を使用して連想配列を作成</h3> <?php $mail = array();//初期化 $mail= array ( 'suzuki' => 'suzuki@mail.com', 'yamada' => 'yamada@mail.com' ); echo $mail['suzuki'].'<br>'; echo $mail['yamada'].'<br>'; ?> <br><br> <h3>array()関数を使用して連想配列を作成 キーを省略</h3> <?php $number = array();//初期化 $number= array ( 1 => 'one', 'two', 'three', 'four', 'five', ); var_dump($number); ?> <br><br> <h3>配列の値の追加「 [・・・] (角括弧) 」を利用したインデックス配列への追加</h3> <?php $name = array();//初期化 $name = array('arai','ito','sato'); $name[] = 'shida'; echo $name[3]; ?> <br><br> <h3>配列の値を上書き</h3> <?php $user = array();//初期化 $user[1] = 'saito'; $user[1] = 'suzuki'; $mail = array();//初期化 $mail['suzuki'] = 'suzuki@mail.com'; $mail['suzuki'] = 'KnjiSuzuki@mail.com'; echo $user[1]; echo '<br>'; echo $mail['suzuki']; ?> <br><br> <h3>配列のキーを負の値にする</h3> <?php $number = array();//初期化 $number[-8] = -8; echo $number[-8]; ?> <br><br> <h3>配列のキーを変数にする場合はクォートする</h3> <?php $ary = array();//初期化 //定数を定義 define('key', 100); //連想配列のキーが定数の値となっている $ary[key] = '定数がキー名'; //連想配列のキーが文字列となっている $ary['key'] = '文字列がキー名'; //echoで出力 echo $ary[100]; echo '<br>'; echo $ary['key']; ?> <br><br> <h3>多次元配列</h3> <?php $user = array();//初期化 $user['grade6']['class1']['boy'][3]['no'] = 3; $user['grade6']['class1']['boy'][3]['name'] = 'arai'; $user['grade6']['class1']['boy'][3]['mail'] = 'arai@mail.com'; echo $user['grade6']['class1']['boy'][3]['name']; ?> <br><br> <h3>多次元配列</h3> <?php $number = array();//初期化 $number= array ( 1 => 'one', 'two', 'three', 'four', 'five', ); var_dump($number); ?> <br><br> <h3>多次元配列</h3> <?php $a = array(); $k = array(); $s = array(); $aks = array();//初期化 $a = array('あ', 'い', 'う', 'え' ,'お'); $k = array('か', 'き', 'く', 'け' ,'こ'); $s = array('さ', 'し', 'す', 'せ' ,'そ'); $aks = array($a, $k, $s); echo $aks[0][0].'<br>'; echo $aks[0][1].'<br>'; echo $aks[1][0].'<br>'; echo $aks[1][1].'<br>'; echo $aks[2][0].'<br>'; echo $aks[2][1].'<br>'; ?> <br><br> <h3>配列のサイズを取得</h3> <?php $ary = array();//初期化 $ary = array('Tokyo', 'Kanagawa', 'Saitama'); $size = count($ary); echo $size; ?> <br><br> <h3>配列の代入 範囲指定</h3> <?php $number = array(); $abc = array();//初期化 $number = range(3, 6); var_dump($number); $abc = range('a', 'f'); var_dump($abc); ?> <br><br> <h3>配列の代入 範囲指定</h3> <?php $number = range(3, 6); var_dump($number); $abc = range('a', 'f'); var_dump($abc); ?> <br><br> <h3>extract()関数で配列を変数に変換する</h3> <?php $user = array();//初期化 $user = array('name' => '鈴木','mail' => 'suzuki@mail.com','sex' => '男'); extract($user); echo "$name $mail $sex"; ?> <br><br> <h3>extract()関数で配列を変数に変換する 変数の衝突を避けるための引数追加</h3> <?php $user = array();//初期化 $user = array('name' => '鈴木','mail' => 'suzuki@mail.com','sex' => '男'); extract($user, EXTR_PREFIX_ALL, 'pre'); echo "$pre_name $pre_mail $pre_sex"; ?> <br><br> <h3>foreach構文を利用して配列を展開する</h3> <?php $array = array();//初期化 $array = array(1, 2, 3, 4, 5); foreach ($array as $value){ echo '現在の配列要素の値は[ '.$value.' ]です。<br>'; } ?> <br><br> <h3>foreach構文を利用して配列のキーと値を取得する</h3> <?php $array = array();//初期化 $array = array( "name" => 'TRY PHP!', "url" => 'http://www.wepicks.net', "mail" => 'info@wepicks.net' ); foreach ($array as $key => $value) { echo '現在の配列要素のキーは[ '.$key.' ]で値は[ '.$value.' ]です。<br>'; } ?> <br><br> <h3>配列に格納する要素とデータ型</h3> 文字列型(string)、整数型(integer)、浮動小数点数型(float)、論理型(boolean)、配列型(array)、オブジェクト型(object)、リソース型(resource)、NULL(null) <?php //文字列型 $stringData = "文字列"; //整数型 $integerData = 10; //浮動小数点数型 $floatData = 0.15; //論理型 $boolData = true; //配列型 $arrayData = array(1,2,3); //オブジェクト型 class test{ } $objectData = new test(); //リソース型 $resourceData = fopen("1-1-1-48-txt.php", "r"); // 外部ファイルオープン //null型 $nullData = null; $allData = array();//初期化 $allData = array( $stringData, $integerData, $floatData, $boolData, $arrayData, $objectData, $resourceData, $nullData ); echo '<pre>'; var_dump($allData); echo '</pre>'; ?> <br><br> <h3>インテレータ関数</h3> <?php $array = array();//初期化 $array = array( "name" => 'TRY PHP!', "url" => 'http://www.wepicks.net', "mail" => 'info@wepicks.net' ); foreach ($array as $key => $value) { echo '現在の配列要素のキーは[ '.$key.' ]で値は[ '.$value.' ]です。<br>'; echo "current():".current($array)."<br>\n"; echo "reset():".reset($array)."<br>\n"; echo "next():".next($array)."<br>\n"; echo "prev():".prev($array)."<br>\n"; echo "end():".end($array)."<br>\n"; echo "<hr/>\n"; } ?> <br><br> |
配列関数サンプル
配列作成
配列操作
配列検索
配列ソート
その他
タグ(=記事関連ワード)
日付
最終更新日:2024年09月15日