PHP SCHOOL.biz

PHPの学習をする為のブログです。プログラム未経験の方にも理解できるよう基本的な、PHPの知識について身に付けることができるようにわかりやすい内容にしていきたいと思っています。


PHPでの配列

配列とは一つの変数で複数の値を保存する変数のことを言います。

下に配列の例を示します。

<?php
$cars = array("Volvo", "BMW", "Toyota");
echo "I like " . $cars[0] . ", " . $cars[1] . " and " . $cars[2] . ".";
?>

実行結果

配列とはなに?

配列は、一度に複数の値を保持できる特別な変数です。
アイテムのリスト(たとえば車名のリスト)がある場合、車を単一の変数に格納すると、次のようになります。

$cars1 = "Volvo";
$cars2 = "BMW";
$cars3 = "Toyota";

しかし、車をループして特定のものを見つけたいと思ったらどうしますか? 3台ではなく、300台あればどうでしょうか?
解決策は、配列を作成することです!
配列は単一の名前で多くの値を保持でき、インデックス番号を参照して値にアクセスできます。

配列を作ってみよう。

PHPではarray()関数で配列を作成することができます。

 array();

PHPには、次の3種類の配列があります:


・インデックス付き配列 - 数値インデックス付き配列
・連想配列 - 名前付きキーを持つ配列
・多次元配列 - 1つ以上の配列を含む配列

PHPでのインデックス付き配列

インデックス付き配列を作成する方法は2つあります。
インデックスは自動的に割り当てられます(インデックスは常に0から始まります)。

$cars = array("Volvo", "BMW", "Toyota");

または、一つづつインデックスを指定し変数へ代入する方法です。

$cars[0] = "Volvo";
$cars[1] = "BMW";
$cars[2] = "Toyota";

次の例では、$ carsという名前のインデックス付き配列を作成し、3つの要素を割り当て、配列の値をテキストを出力します。

<?php
$cars = array("Volvo", "BMW", "Toyota");
echo "I like " . $cars[0] . ", " . $cars[1] . " and " . $cars[2] . ".";
?>
count()関数を使って配列の数をカウントしよう。

count()関数は、配列の長さ(要素の数)を返すために使用されます

<?php
$cars = array("Volvo", "BMW", "Toyota");
echo count($cars);
?>

実行結果

インデックス付き配列をループする

ループしてインデックス付き配列のすべての値を出力する場合は、forループを使用することができます。

<?php
$cars = array("Volvo", "BMW", "Toyota");
$arrlength = count($cars);

for($x = 0; $x < $arrlength; $x++) {
    echo $cars[$x];
    echo "<br>";
}
?>

実行結果

PHPでの連想配列

連想配列は、指定した名前付きキーを使用する配列です。連想配列を作成する方法は2つあります。

$age = array("Peter"=>"35", "Ben"=>"37", "Joe"=>"43");

または、

$age['Peter'] = "35";
$age['Ben'] = "37";
$age['Joe'] = "43";

名前付きのキーをプログラム中で使用することができます。

<?php
$age = array("Peter"=>"35", "Ben"=>"37", "Joe"=>"43");
echo "Peter is " . $age['Peter'] . " years old.";
?>

実行結果

連想配列をループさせてみよう。

連想配列のすべての値をループして出力するには、次のようにforeachループを使用します。

<?php
$age = array("Peter"=>"35", "Ben"=>"37", "Joe"=>"43");

foreach($age as $x => $x_value) {
    echo "Key=" . $x . ", Value=" . $x_value;
    echo "<br>";
}
?>

実行結果

PHPでの連想配列

配列には複数の要素として管理できますが、配列そのものを要素として持つ配列を作成することが出来ます。

配列の次元は、要素を選択するために必要なインデックスの数を示します。

・2次元配列の場合、要素を選択するには2つのインデックスが必要です。
・3次元配列の場合、要素を選択するために3つのインデックスが必要です。

多次元配列は配列の配列です。まず、次の表を見てください。

名前 在庫 販売数
Volvo 22 18
BMW 15 13
Saab 5 2
BMW 17 15

上記の様なテーブルのデータを2次元配列に格納するには、次のようにします。

$cars = array
(
array("Volvo",22,18),
array("BMW",15,13),
array("Saab",5,2),
array("Land Rover",17,15)
);

2次元$cars配列には4つの配列があり、行と列の2つのインデックスがあります。
$cars配列の要素にアクセスするには、2つのインデックス(行と列)を指す必要があります。

<?php
$cars = array
  (
  array("Volvo",22,18),
  array("BMW",15,13),
  array("Saab",5,2),
  array("Land Rover",17,15)
  );

echo $cars[0][0].": In stock: ".$cars[0][1].", sold: ".$cars[0][2].".<br>";
echo $cars[1][0].": In stock: ".$cars[1][1].", sold: ".$cars[1][2].".<br>";
echo $cars[2][0].": In stock: ".$cars[2][1].", sold: ".$cars[2][2].".<br>";
echo $cars[3][0].": In stock: ".$cars[3][1].", sold: ".$cars[3][2].".<br>";
?>

実行結果

for分の中にfor文を入れて、$car配列の値にアクセスすることも可能です。
下にその例を示します。2つのインデックスを指し示す必要があります。

<?php
for ($row = 0; $row < 4; $row++) {
  echo "<p><b>Row number $row</b></p>";
  echo "<ul>";
  for ($col = 0; $col < 3; $col++) {
    echo "<li>".$cars[$row][$col]."</li>";
  }
  echo "</ul>";
}
?>