PHP: 変数

PHP: 変数

August 24, 2020
PHP
PHP

変数の基礎的なこと。

変数の利用 #

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"
}