
変数と配列と定数についてです。
変数のきほん
PHP7 の変数の基本ルールです
- $変数名 または ${変数名}
- 変数名は大文字小文字を区別
- 変数の使用前の宣言は不要
- “&$変数名”として参照渡しによる代入が可能($a = &$b;)
- 変数のスコープ
- 関数の中の変数:関数の中だけのローカル変数
- 関数の外の変数:グローバル変数。ただし、そのままでは関数の中からは見えない。
- 関数の中でグローバル変数を使う方法(2通り)
- 関数の中で
global $a, $b;
のように宣言する - 関数の中でシステムで用意してある配列 $GLOBALS を使う(例:$GLOBALS[‘a’])
- 関数の中で
- 関数の中で静的変数が使える(例: static $a = 0; //最初の呼び出しで0に初期化)
- 変数を変数の名前に使える(可変変数)・・・${$a} 曖昧さがなければ $$a でも可
変数の内容を判定する関数
- 変数が空か調べる(0や”0″や””も空)・・・ empty
- 数値とみなせるデータが入っているか調べる・・・ is_numeric
文字列のきほん
PHP7 で文字列を扱うときの基本ルールですね
- ‘文字列’ ・・・そのまま(文字列の中に変数があっても展開されない)
- “文字列” ・・・ 文字列の中に変数があると展開される
- ヒアドキュメントも使える(
<<<
)- ヒアドキュメントの中の変数は基本展開される(
<<<識別子
) - 識別子を ‘識別子’ とすると展開されない(
<<<'識別子'
)
- ヒアドキュメントの中の変数は基本展開される(
- ‘文字列1’ . ‘文字列2’ ・・・ピリオド(.) で連結できる
配列のきほん
いろんな配列が使えるんですね
- $変数名[添え字]
$a[0] = "こむろ";
・・・添え字が数字$a['name'] = "こむろ";
・・・添え字が文字列(連想配列)$a[] = "こむろ";
・・・添え字は0から自動で割り当てられる
- まとめて生成(初期化)・・・ array
$a = array('データ1' , 'データ2' , 'データ3');
・・・添え字は0から順に$a = array(5=>'データ1' , 'データ2' , 'データ3');
・・・添え字は5から順に$a = array('one'=>'データ1' , 'two'=>'データ2' , 'three'=>'データ3');
・・・連想配列
多次元配列も大丈夫
多次元配列も大丈夫
- $変数名[添え字1][添え字2] ・・・$a[0][0] = “こむろ”;
- まとめて生成(初期化)・・・ array
$a = array(
'alpha'=>array(
'データ1', ・・・ $a['alpha'][0] で参照
'データ2' ・・・ $a['alpha'][1] で参照
),
'beta'=>array(
'データ3', ・・・ $a['beta'][0] で参照
'データ4' ・・・ $a['beta'][1] で参照
)
);
配列の基本的な関数
配列を扱うための関数も揃ってますね
- 配列の要素の数・・・ count count($arr);
- 配列の現在ポインタのある要素の添え字(インデックス)を返す・・・ key key($arr);
- 配列の現在ポインタのある位置の要素を返す・・・ current current($arr);
- 配列の先頭の要素を返す(内部ポインタを先頭にセット)・・・ reset reset($arr);
- 配列の最後の要素を返す(内部ポインタを最終要素にセット)・・・ end end($arr);
- 配列のひとつ前の要素を返す(内部ポインタをひとつ戻す)・・・ prev prev($arr);
- 配列の次の要素を返す(内部ポインタをひとつ進める)・・・ next next($arr);
- 配列の要素から “$添え字” という変数を作り出す・・・ extract extract($arr);
配列で使える演算子
配列を扱える演算子もあるの
- $arr1 + $arr2・・・ 配列の結合
- $arr1 == $arr2・・・添え字も要素もすべて等しい(PHPが自動変換した結果同じになる)
- $arr1 === $arr2・・・ 添え字も要素も形式上も完全に等しい(元々の型や並び順も含めて同じ)
- $arr1 != $arr2・・・ 添え字と要素のどこかが等しくない(PHPが自動変換した結果でも等しくない)
- $arr1 <> $arr2・・・添え字と要素のどこかが等しくない(PHPが自動変換した結果でも等しくない)
- $arr1 !== $arr2・・・ 添え字や要素のどこかが完全には等しくない(元々の型や並び順も含めて同じでないところがある)
配列の要素をとりだし
配列を使ってループ処理すると…
うん、PHP7 だとこんなかんじ
- 添え字が整数
for ( $i=0; $i<count($arr); $i++ ) {
print $arr[$i];
}
- 添え字が文字列(連想配列)
for( reset($arr); key($arr); next($arr) ) {
print current($arr);
}
定数のきほん
定数のきほんです
- 定数名は文字列そのまま($などつけない)
- 定数名は大文字小文字を区別すると思っておいた方がいい(なんと定義のしかたによっては区別しない場合もある)
- 定数はグローバルにどこからでもアクセスできる
- 定数の定義は define ・・・define(‘定数名’ , 内容);
- 定数の定義は const でも可能。ただし制約があることがあるので注意・・・const 定数名=内容;
- 配列型の定数も作れる