配列の利用方法
6.2 配列の利用方法
配列を作る方法を説明していきます。配列を作成する方法には以下に示す4種類があります。状況に応じて使い分ける必要がありますので、本節でしっかり学習していきましょう。
配列を作成する方法
・データを1つずつ代入して作成する方法
①正数値をキーに利用(6.2.1で学習)
②文字列をキーに利用(6.2.2で学習)
・組み込み関数の「array関数」を利用して作成する方法
③正数値をキーに利用(6.2.3で学習)
④文字列をキーに利用(6.2.3で学習)
6.2.1 正数値をキーにしてデータを1つずつ代入して作る配列と使用方法
配列を作る場合に最も基本となる、正数値をキー(添え字)にしてデータを1つずつ代入して配列を作る方法と、その使用方法について説明します。
書式:代入で配列を作る(正数値キーを利用)
配列にデータを代入する場合は、変数と同じように「=」を使います。その時の左辺には配列名だけではなく、[正数値キー]を指定しますが、正数値キーは省略が可能です。省略すると、自動的にキーが0から順に割り当てられます。(もし既にデータが入っている場合は、最大キー値の続きから順に割り当ててくれます)
凡例:代入で配列を作る(正数値キーを利用)
正数値キーを指定して代入する方法は、決まった位置に値を入れたい場合に使用します。正数値キーを指定しないで代入する方法は、データを追加する場合に利用されます。
凡例の配列にデータを代入するイメージは図6.2.1のようになります。
図 6.2.1 配列変数へ代入(正数値キー)
書式:配列要素の使用(格納データの参照)
凡例:配列要素の使用(格納データの参照)
配列も「 $配列名[正数値キー] 」の指定を行えば、変数と同じようにデータを参照することができます。キーの指定が無いとデータを使用することができないので注意してください。
またデータの入れ替えも変数と同じように同様に行えますので合あわせて覚えておいてください。
配列を利用するプログラム
配列の各要素にデータを格納し、その配列に格納されているデータを参照し、Webブラウザに表示して確認してみましょう。
ソース・フォルダ:myproj_super_intro/ch06
ファイル名 :useArray.php
アクセスURL :http://localhost/myproj_super_intro/ch06/useArray.php
➢ useArray.java
<?php $profile[0] = "神田ゴロウ"; //名前をキー0を指定して配列に格納 $profile[1] = 169.5; //身長をキー1を指定して配列に格納 $profile[] = 19; //年齢をキー指定なしで配列に格納 $profile[] = 'A'; //血液型をキー指定なしで配列に格納 ?> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> </head> <body> <?php echo $profile[0],"さんの身長は",$profile[1],"cmです。<br>"; echo "年齢は",$profile[2],"歳、血液型は",$profile[3],"型です<br>"; ?> </body> </html>
実行結果
解説
2行目で配列変数$profileに、キー0を指定して名前のデータ「神田ゴロウ」を代入しています。
3行目で配列変数$profileに、キー1を指定して身長のデータ「169.5」を代入しています。
4行目で配列変数$profileに、キーを指定しないで年齢のデータ「19」を代入しています。
5行目で配列変数$profileに、キーを指定しないで血液型のデータ「A」を代入しています。
配列へデータを代入するイメージは図6.2.2のようになります。データを代入するほど配列変数の中にデータが増えていき、並びは正数値キーの順番で保持されるようになります。
図 6.2.2 配列変数$profileへ正数値キーを指定して各データを代入
13、14行目では、2~5行目で配列用意したデータを利用(参照)して、画面に結果を表示しています。配列も変数と同じように「配列名[キー]」と指定することで、その中に代入されている値を利用することができます。
以下の図6.2.3で13行目の配列の要素を参照する処理イメージを例として示します。
図 6.2.3 配列要素の利用(参照)
◉ポイント
・ 配列を作成する方法には正数値キーを指定して代入する方法と、省略して代入する方法がある。
・ 配列[キー]の書式を用いると、キーが示す配列要素の値を参照(利用)することができる。
6.2.2 文字列をキーにしてデータを1つずつ代入して作る配列と使用方法
文字列をキー(添え字)にしてデータを1つずつ代入して配列を作る方法について説明します。
前項で学習した整数値キーを使用した通常の配列とは異なり、文字列キーをもとにしてデータを設定した配列を「連想配列(れんそうはいれつ)」とも呼びます。連想配列のメリットは文字キーで格納することで、その文字からどのようなデータが格納されているのかを連想できて分かりやすくなることです。
書式:代入で配列を作る(文字列キーを利用)
連想配列の作り方は、キーを文字列で作成する以外は正数値キーで作成する方法と同じです。キーは文字列なのでシングルもしくはダブルクォーテーションのどちらかで囲んでください。
凡例:代入で配列を作る(文字列キーを利用)
キーを文字列で作成するときは、変数や配列のような命名規則はないので、どのようにでも付けることができます。一般的には格納されているデータが連想できる名前をつけます。
凡例の配列をデータに代入するイメージは以下のようになります。
図 6.2.4 配列変数へ代入(文字列キー)
文字列キーの配列要素を使用する方法は、「$配列名[‘文字列キー’]」と指定すれば代入された値を利用することができます。この仕組みはキーが正数値から文字列に変わっても同じです。
それでは文字列キーを利用した連想配列を利用したプログラムを作成してみましょう。
連想配列を利用するプログラム
連想配列に各データを格納し、その配列に格納されたデータを参照し、Webブラウザに表示して確認してみましょう。
ソース・フォルダ:myproj_super_intro/ch06
ファイル名 :useAssociationArray.php
アクセスURL :http://localhost/myproj_super_intro/ch06/useAssociationArray.php
➢ useAssociationArray.php
<?php $profile['name'] = "神田ゴロウ"; //キーnameを指定して、配列に名前を格納 $profile['身長'] = 169.5; //キー身長を指定して、配列に身長を格納 $profile['age'] = 19; //キーageを指定して、配列に年齢を格納 $profile['型'] = 'A'; //キー型を指定して、配列に血液型を格納 ?> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> </head> <body> <?php echo $profile['name'],"さんの身長は",$profile['身長'],"cmです。<br>"; echo "年齢は",$profile['age'],"歳、血液型は",$profile['型'],"型です。<br>"; ?> </body> </html>
実行結果
解説
このプログラムは前項のuseArray.phpのプログラムと実行結果は同じです。異なっている点は通常の配列を使用しているか、連想配列(文字列キー)を使用しているかです。
2行目で配列変数$profileに、キー’name’を指定して名前のデータ「神田ゴロウ」を代入しています。
3行目で配列変数$profileに、キー’身長’を指定して身長のデータ「169.5」を代入しています。
4行目で配列変数$profileに、キー’age’を指定して年齢のデータ「19」を代入しています。
5行目で配列変数$profileに、キー’型’を指定して血液型のデータ「A」を代入しています。
このように連想配列を利用することで、各要素にどのようなデータが入っているかを文字キーから分かり易くすることができます。
連想配列のデータ格納イメージは以下の図6.2.5のようになります。連想配列は数値キーとは異なり、代入した順番でデータが管理されます。
図 6.2.5 配列変数$profileへ文字列キーを指定して各データを代入
13~14行目で、連想配列に代入した各要素文字キーを指定することで参照しています。正数値キーでも文字列キーでも参照方法は変わりません。
連想配列は、通常の配列よりも多くのデータを扱う場合に利用すると便利です。正数値のキーでは、後でソースコードを見返した時に、どのようなデータを格納しているのか、すぐにわからないかもしれません。しかし文字キーで格納しておけば、その文字からどのようなデータを利用しているのかを連想でき、分かり易くなります。
◉ポイント
・ 連想配列とは、文字列キーをもとにして値を設定する配列のことをいう。
6.2.3 配列をarray関数を利用して作ってみよう
これまでは、配列に1つずつデータを格納する方法を学習してきました。しかし、PHPが初めから備えている組み込み関数である「array関数」を利用すれば、データをまとめて配列に代入することもできます。
また、使い方によって、通常の配列(正数値キー)と連想配列(文字列キー)のどちらも作成することができます。
書式:array関数で配列(正数値キー)を作る
arrayの後ろの「( )」括弧内に、配列に格納したいデータの数分を「,(カンマ)」区切りで並べていきます。こうすると、最初のデータから正数値キー0を割り振って正数値キーの配列を作成してくれます。
書式:array関数で連想配列(文字列キー)を作る
連想配列を使う方法は「’文字列キー名’ => データ」の形式のペアをカンマで区切って書いて並べていくだけです。キー名とデータの間の「=>」は、半角の=(イコール)と半角の>(大なり)の記号は必ずくっつけて記述してください。
凡例:array関数で配列を作る
array関数を利用するプログラム
array関数を利用するプログラム
ソース・フォルダ:myproj_super_intro/ch06
ファイル名 :useArrayMethod.php
アクセスURL :http://localhost/myproj_super_intro/ch06/useArrayMethod.php
➢ useArrayMethod.java
<?php //array関数を使ってトランプの画像名を配列で作成 $cards = array("Jk.png","01.png","02.png","03.png","04.png","05.png","06.png", "07.png","08.png","09.png","10.png","11.png","12.png","13.png"); //表示したいカード番号を選択 $num = 12; ?> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> </head> <body> ■カード画像表示<br> <?php echo '<img src="../cards/' , $cards[$num] , ' ">'; ?> </body> </html>
実行結果
解説
3行目でarray関数を利用して、トランプの画像ファイル名を配列変数$cardsに格納しています。
array関数の括弧内に並べた順番に0から正数値キーを割り振って配列を作成してくれます。
図 6.2.6 array関数を利用しての配列作成イメージ
7行目では表示したいトランプ画像のファイル名(12.png)が格納されている配列要素番号(添字)の12を、変数$numに代入しています。他の画像を表示したい場合は変数の値(添字)を12以外に変更してみてください。
16行目で変数$numと、キー12のトランプ画像Qのファイル名(12.png)が格納されている$cards[12]で参照し画面に結果を表示しています。今回の記述のように、HTMと、PHPプログラムで用意した配列変数の画像名とを連携させることもできます。
配列データを扱う「 $cards[$num] 」は、初めてみる仕組みが利用されているので、この16行目をもう少し詳しく説明してみます。
ここでは、配列$cardsのキーとして変数$numの値を使用しています。7行目で変数$numに12が代入されているので、「 $cards[$num] 」は変数$numが12に展開(置換)され$cards[12]になります。$cards[12] で参照すると、配列$cards に格納されている13番目の要素の値である「12.png」が得られます。なぜ配列で13番目になるかというと、それは添字は0から始まるからです。その後、$cards[12]の値と両辺の文字列を2つのカンマで結合を行うと、「 echo ‘<img src=”../cards/12.png” >’; 」になります。
補足ですが、16行目は文字列の括りを「”」でその中の文字列を「’」を用いて「 echo “<img src=’../cards/” , $cards[$num] , ” ‘> “; 」のように記述することもできます。この記述は変数展開とカンマで結合すると、「 echo “<img src=’../cards/12.png’ >”; 」のようになります。
これは、ダブルクォーテーション「”」の中ではシングルクォーテーション「’」を、シングルクォーテーション「’」の中ではダブルクォーテーション「”」を用いることができるからです。
◉ポイント
・ 配列を作成する方法には組み込み関数arrayを利用した方法がある。
・ array関数は使い方によって、通常の配列と連想配列の両方を作成することができる。
・ 配列のキー値には数値や文字以外に、変数の値を利用することもできる。