PHPにおいては変数宣言構文が存在しない。変数は値が代入された時点で作成される
■変数名
^[a-zA-Z_][a-zA-Z0-9_]*こんな感じ。つまり変数名の先頭に数字は使えない。そして、頭には「$」をつけること!
大文字と小文字は区別される。
■可変変数
これは強力だが、コードが読みづらく非常に危険な気もする。個人的には敢えて使わないでおこう。
<?php $name = 'foo'; $$name = 'bar'; print($foo);//bar $name = '123'; $$name = '456'; print(${'123'});//456 function myFunc(){ //code } $f = 'myFunc'; $f(); ?>
■変数が存在しているかを確認
言語機構のisset()を使う。
<?php if(isset($val)){ //code } ?>
isset()は変数が存在し、nullでない時にtrueを返す。従って以下のようなコードで問題が起こる可能性がある。このような問題を防ぐ為には、アルゴリズムを見直すか、is_nullを使う。
$tmpAry = array(1 => null, 2 => 'sample'); foreach($tmpAry as $key => $value){ if(isset($value)/* || is_null($value)*/){ //code } }
また、以下のようにキーを使用して変数のテストをする方法も考えられる。
$tmpAry = array(1 => null, 2 => 'sample'); foreach($tmpAry as $key => $value){ if(array_key_exixts($key, $tmpAry)){ //code } }
各関数について
- bool isset(mixed $var)
- 変数がセットされているかどうかを返す。実際には関数ではなく言語構造である。
■参照
変数のクローンは作成されず、メモリ上の住所(参照)が格納される
<?php $dog = 'Jack'; $cat = &$dog; print($cat);//Jack $cat = 'Emily'; print($dog);//Emily ?>
■定数
- 値はスカラー値(論理値、整数、浮動小数点数、文字列)
- 一度値を設定したら、後から変更することは出来ない
- 全てのスコープから参照できる
- 定数名は^[a-zA-Z_][a-zA-Z0-9_]*こんな感じ。但し、慣例として大文字が用いられることが多い
- 大文字と小文字は区別される
<?php define('EMAIL', 'sample@sample.com'); echo EMAIL;//sample@sample.com ?>