PHP: 変数
August 24, 2020
変数の基礎的なこと。
変数の利用 #
PHP においては変数宣言は不要。代入により利用可能。
<?php
$val = "hoge";
?>
var_dump($val) <?php var_dump($val) ?>
var_dump($yet_val) <?php var_dump($yet_val) ?>
unset($val) <?php unset($val) ?>
var_dump($val) <?php var_dump($val) ?>
var_dump($val) string(4) "hoge"
var_dump($yet_val) NULL
unset($val)
var_dump($val) NULL
unset()
で変数を未使用状態にも戻せる。
文字列リテラル内の変数展開 #
ダブルクォーテーションの文字列リテラル中の変数は展開される。変数に利用できない文字が出現すればデリミタ扱いだが、そうではない場合は {$var}
と記述すれば良い。
<?php
$name = "john";
$greeting = "hello";
echo "$name, $greeting\n";
echo "{$name}nnn!!!\n";
john, hello
johnnnn!!!
値渡し / 参照渡し #
PHP において代入は基本 値渡し 。代入右辺の変数に &
を付与することで 参照渡し ができる。
<?php
$a = 123;
$a_val = $a;
$a_ref = &$a;
echo "$a $a_val $a_ref\n";
$a = 456;
echo "$a $a_val $a_ref\n";
$b_val = $a_ref;
$b_ref = &$a_ref;
$a = 789;
echo "$a $a_val $a_ref $b_val $b_ref\n";
123 123 123
456 123 456
789 123 789 456 789
ただこの &
は C 言語のポインタとは異なるようで、別にポインタ型があるわけでもなさそう( $b_val = $a_ref
や $b_ref = &$a_ref
あたりより判断)
可変変数 #
$$val_name
とドルマークを重ねると可変変数となり動的に変数へアクセスできる。 $val_name
で評価された文字列(以下サンプルコードだと val
)の変数名( $val
)で評価される。
<?php
$val = 123;
$val_name = "val";
echo $$val_name . "\n";
123
定義済み変数の一覧を取得する - get_defined_vars() #
get_defined_vars()
でその呼び出したスコープにある定義済み変数を配列で取得できる。
<?php
$a = 123;
$b = 1.0;
$c = TRUE;
$d = "str";
var_dump(get_defined_vars());
array(11) {
["_GET"]=>
array(0) {
}
:
:
["a"]=>
int(123)
["b"]=>
float(1)
["c"]=>
bool(true)
["d"]=>
string(3) "str"
}