logo

パレット - カラフルに🎨

Palette — ビジュアルページビルダー、デザインの専門知識は不要です。

ライブデモ パレットをダウンロード

Scroll

PHP レッスン — レッスン 10 — 配列

08/12/2019, by Ivan

このレッスンまで、私たちは数値変数と文字列変数だけを見てきましたが、このレッスンでは配列に触れます。配列は、数値変数も文字列変数も含められます。だからこそ、まさに配列と呼ばれるのです。

配列の要点は次のとおりです。配列のキーの集合があり、配列の値の集合があります。配列の各キーには 1 つの値が属します。例えば、キー 1,2,3 があるとして、値は 4、'Hello World'、true であり得ます。配列は変数と同じように、ドル記号を付けて記述します:

$tree = array();

ただし、配列を作るには array() 関数を使います。

 

実は、PHP では変数を宣言するのと同じく、配列を宣言することも必須ではありません。しかし、他人のコードを理解するには、変数がどこから現れ、どんな型なのかが常に見えるほうがよいのです。

では、上で示した配列を定義しましょう:

<?php
  $tree = array(
    1 => 4,
    2 => 'Hello World',
    3 => true,
  );
?>

構文に注目してください。最初は変数と同じで、値を代入します。次に array キーワードが来て、変数が配列になることを意味します。次に丸括弧の中にキー/値のペアが来ます。

しかも、次のように書きます:

array(
  キー1 => 値1,
  キー2 => 値2,
);

まずキーが来て、次にイコール記号、その直後にスペースなしで大なり記号が来ます。大なり記号の後にスペースと、配列のキーに対応する値が来ます。キー/値のペアの後にカンマを置きます。各キー/値のペアについて、これを繰り返します。

配列は 1 行で書くこともできます:

<?php
  $tree = array(1 => 4, 2 => 'Hello World', 3 => true,);
?>

この場合、変数 $tree はどちらの場合も同じになります。ただ、最初の書き方のほうが読みやすいです。書き方の規則については後で話します。今は意味を理解するほうが重要です。

配列は print_r() 関数を使って画面に出力できます。print 関数と違い、print_r は括弧を使います。

<?php
  $tree = array(
    1 => 4,
    2 => 'Hello World',
    3 => true,
  );
  print_r($tree);
?>

その結果、配列を画面に出力します

Array ( [1] => 4 [2] => Hello World [3] => 1 )

<pre> タグを追加すると、出力された配列の見た目がよくなります:

<?php
  $tree = array(
    1 => 4,
    2 => 'Hello World',
    3 => true,
  );
  print '<pre>';
  print_r($tree);
  print '</pre>';
?>

次のようなものになります:

Array
(
    1 => 4,
    2 => 'Hello World',
    3 => true,
) 

配列を作れるようになったので、配列から情報を取り出してみましょう:

<?php
  $tree = array(
    1 => 4,
    2 => 'Hello World',
    3 => true,
  );
  print $tree[2];
?>

こうして、配列の 2 番目の要素 'Hello World' を取り出し、画面に出力しました。あるキーの値を参照するには、配列変数の名前を書き、次に角括弧の中にそのキーを書きます。同じように $tree[1]、$tree[3] も呼び出せます。

では、配列に要素を追加する方法を見てみましょう。空のキーを指定するだけで十分です:

<?php
  $tree = array(
    1 => 4,
    2 => 'Hello World',
    3 => true,
  );
  $tree[] = 'もう 1 つの要素';
  print '<pre>';
  print_r($tree);
  print '</pre>';
?>

こうして、次のような配列を出力します:

Array
(
    [1] => 4
    [2] => Hello World
    [3] => 1
    [4] => もう 1 つの要素
)

ご覧のとおり、空のキーを指定すると、PHP は次の番号のキーを追加します。しかし、順番の数字ではなく、角括弧の中にすぐにキーを指定して追加することもできます:

 

<?php
  $tree = array(
    1 => 4,
    2 => 'Hello World',
    3 => true,
  );
  $tree[6] = '別の要素';
  print '<pre>';
  print_r($tree);
  print '</pre>';
?>

結果として、キー 1,2,3,6 があり、キー 4,5 はない、ということになります。ですから、配列に例えばキー 103, 105 が現れても、それは配列にキー 104 があるという意味ではないことを覚えておくべきです。あるかどうかは次の関数で確認できます

if(empty($tree[104])){

}

角括弧の中にすでに存在するキーを指定すると、値を上書きできます:

 

<?php
  $tree = array(
    1 => 4,
    2 => 'Hello World',
    3 => true,
  );
  $tree[3] = '別の要素';
  print '<pre>';
  print_r($tree);
  print '</pre>';
?>

新しい要素は作られませんが、3 番目のキーの値は上書きされます。

また、配列のキーはテキストであってもよいことに注目すべきです:

<?php
  $tree = array(
    1 => 4,
    2 => 'Hello World',
    'key3' => true,
  );
  print '<pre>';
  print_r($tree);
  print '</pre>';
?>

この場合、キーの値を引用符(単一または二重)で書きます。また、配列の値を次のように呼び出します:

print $tree['key3'];

配列については…今のところすべて分かったと思います。というのも、これから多次元配列について説明するからです。

PHP 多次元配列

多次元配列は、その名のとおり、複数の次元を持ちます。最も簡単な説明は掛け算の表でしょう。2 つの数があり、その 2 つの数に依存する結果があります。

<?php
$multi = array();
$multi[1][1] = 1;
$multi[1][2] = 2;
$multi[1][3] = 3;
$multi[2][1] = 2;
$multi[2][2] = 4;
$multi[2][3] = 6;
$multi[3][1] = 3;
$multi[3][2] = 6;
$multi[3][3] = 9;
print '<pre>';
print_r($multi);
print '</pre>';
?>

一次元配列にはキーが 1 つですが、二次元配列にはキーが 2 つあります。三次元配列にはキーが 3 つ、という具合です。しかもキーの順序には意味があります。つまり $multi[1][3] と $multi[3][1] は別の数です。

<?php
$multi = array();
$multi[1][3] = 3;
$multi[3][1] = 'Hello, World!';
print '<pre>';
print_r($multi);
print '</pre>';
?>

配列は、多くの値をまとめて設定することもできます:

<?php
$multi = array(
  1 => array(
    1 => 1,
    2 => 2,
    3 => 3,
  ),
  2 => array(
    1 => 2,
    2 => 4,
    3 => 6,
  ),
  3 => array(
    1 => 3,
    2 => 6,
    3 => 9,
  ),
);
print '<pre>';
print_r($multi);
print '</pre>';
?>

配列についてさらに例が出てきたら、後で紹介します。ひとまず次のレッスンへ。