前回(その7)のヒアドキュメントでは、終了文字列のインデント位置によって、先頭部分の空白が除去される。
下の例だと「$msg」の真下にある空白部分は全て除去される。
$msg = <<<EOD
{$str}は、サーバーサイドで動作する簡易スクリプト。
まずはじっくり基礎固めしよう。<br>
“Let’s start, everyone!!”
EOD;
よって、終了文字列よりもインデントが少ない行は不可。
$msg = <<<EOD
{$str}は、サーバーサイドで動作する簡易スクリプト。
まずはじっくり基礎固めしよう。<br>
“Let’s start, everyone!!”
EOD;
上の例では(不正なインデント階層(少なくとも2個のインデントが必要))のようなエラーとなる。
ヌル型は、ある変数が値を持たないことを表し、唯一のリテラルとしてnullを持つ。
次の条件で変数はヌルであるとみなされる。
①変数に値が代入されていない場合
②変数に明示的にnullが代入された場合
③unset関数で変数の内容が破棄された場合
具体例
<?php
$n1; //値が代入されていないのでnull
$n2 = null; //明示的にnullを代入
ここまで扱った変数は、全て一つの変数(入れ物)に対して1つの値を持つものばかりだった。
このような値のことをスカラー型と言う
しかしデータの種類によっては複数の値をまとめて扱いたいケースもよくある。
例えば次に表すのは「面白かった映画」を管理する例。
$title1 = ‘セルラー’;
$title2 = ‘スーサイドスクワット’;
$title3 = ‘ライフ’;
$title4 = ‘インターステラー’;
$title5 = ‘ドントプリーズ’;
$title1、$title2…………と通し番号が付いているので、一見、データをまとめて管理しているよう。
しかしPHPからすれば$title1と$title2はどんなに似ていても何の関係もない独立した変数である。
例えば登録されている映画の本数を知りたいと思ってもすぐにカウントすることはできないし、全ての映画タイトルを列挙したいとしても変数をここに並べるしか術はない。
そこで登場するのが配列である。
スカラー型の変数が値を一つしか扱えないのに対し、配列には複数の値を収める事ができる。
配列は仕切りのある入れ物だと考えても良い。
仕切りで区切られたスペース(要素という)のそれぞれには、番号が振られ、互いを識別できる。
配列はスカラー型に対して、複合型と呼ばれる場合もある。
配列を利用する事で、互いに関連する値の集合を1つの名前で管理できるので、まとめて処理をする際にもコードが書きやすくなる。
配列を使った具体例
<?php
$data = [‘山田’, ’田中’, ’及川’, ’子安’, ’河野’,’竹田’];
print $data[4];
//結果: 河野
配列を作成するための一般的な構文は次のとおり。
配列の生成
$配列名 = [値1, 値2, ………];
配列はカンマ区切りの値をブラケット([~])でかかった形で表現する。
空の配列を生成するならば単に[]とする。
配列最後のカンマは付けてもつけなくても良い。
$data = [‘山田’, ’田中’, ’及川’, ’子安’, ’河野’,’竹田’,];
ただし、配列を1行で表す場合には冗長なだけなので、最後のカンマは省略するのが一般的。
一方、配列を複数行で表す場合には(値が長い場合には、要素単位で改行した方がコードが見やすくなる)最後のカンマを付与した方が良い。
それによって後から要素を追加した場合でも、カンマの漏れを防げるから。
配列$dataに対して、5つの要素(’山田’, ’田中’, ’及川’, ’子安’, ’河野’,’竹田’)をセットしている。
それぞれの要素には先頭から順に0, 1, 2, …………と言う番号が振られている。
9でもう少し詳しく