3v4l.org

run code in 300+ PHP versions simultaneously
<?php // よくある変数宣言と代入の例 $a = 17; // グローバルスコープに現在定義されているすべての変数への参照を含む連想配列である $GLOBALS から $a を見る // @see https://www.php.net/manual/ja/reserved.variables.globals.php echo '$a: '.$GLOBALS['a']."\n"; // $a: 17 // $0 を作る例 // $0 = 31; // ←は文法エラーとなります。 // 次リンクには" 有効な変数名は文字またはアンダースコアから始まり、任意の数の文字、 数字、アンダースコアが続きます"とあります。 // https://www.php.net/manual/ja/language.variables.basics.php // $0 がグローバルスコープにないことを確認 var_dump(isset($GLOBALS[0])); // bool(false) // 可変変数で変数名として 0 を使います $varName = 0; $$varName = 31; // $0 がグローバルスコープに増えたことを確認 var_dump(isset($GLOBALS[0])); // bool(true) echo '$0: '.$GLOBALS[0]."\n"; // $0: 31 // グローバルスコープ参照 echo '$0: '.$$varName."\n"; // $0: 31 // 可変変数参照 echo "$0: ${$varName}\n"; // $0: 31 // 可変変数的文字列中の変数のパース https://www.php.net/manual/ja/language.types.string.php#language.types.string.parsing echo "$0: ${0}\n"; // $0: 31 // 直打ち的文字列中の変数のパース https://www.php.net/manual/ja/language.types.string.php#language.types.string.parsing // また、上の $0 同様にこれを利用して定義済み変数の $GLOBALS とは別のグローバルスコープ下にある $GLOBALS を作れます。 // $GLOBALS が通常のグローバルスコープ下にないことを確認 var_dump(isset($GLOBALS['GLOBALS'])); // bool(false) $varName = 'GLOBALS'; $$varName = 47; // $GLOBALS が通常のグローバルスコープ下に増えたことを確認 var_dump(isset($GLOBALS['GLOBALS'])); // bool(true) echo '$GLOBALS: '.$GLOBALS['GLOBALS']."\n"; // $GLOBALS: 47 // 通常のグローバルスコープ参照 echo '$GLOBALS: '.$$varName."\n"; // $GLOBALS: 47 // 可変変数参照 // 文字列宙の変数のパースでは可変変数的に呼び出すか定義済み名そのもので呼び出すかで挙動が変わります。 // 可変変数的に文字列中の変数のパース echo "\$GLOBALS: ${$varName}\n"; // $GLOBALS: 47 // 定義済み名そのもので文字列中の変数のパース echo "\$GLOBALS: ${'GLOBALS'}\n"; // Warning: Array to string conversion in xxx // $GLOBALS: Array
Output for 8.2.0 - 8.2.25, 8.3.0 - 8.3.14
Deprecated: Using ${expr} (variable variables) in strings is deprecated, use {${expr}} instead in /in/2nUnl on line 22 Deprecated: Using ${expr} (variable variables) in strings is deprecated, use {${expr}} instead in /in/2nUnl on line 23 Deprecated: Using ${expr} (variable variables) in strings is deprecated, use {${expr}} instead in /in/2nUnl on line 38 Deprecated: Using ${expr} (variable variables) in strings is deprecated, use {${expr}} instead in /in/2nUnl on line 40 $a: 17 bool(false) bool(true) $0: 31 $0: 31 $0: 31 $0: 31 bool(false) bool(true) $GLOBALS: 47 $GLOBALS: 47 $GLOBALS: 47 Warning: Array to string conversion in /in/2nUnl on line 40 $GLOBALS: Array
Output for 8.1.0 - 8.1.30
$a: 17 bool(false) bool(true) $0: 31 $0: 31 $0: 31 $0: 31 bool(false) bool(true) $GLOBALS: 47 $GLOBALS: 47 $GLOBALS: 47 Warning: Array to string conversion in /in/2nUnl on line 40 $GLOBALS: Array
Output for 8.0.0 - 8.0.30
$a: 17 bool(false) bool(false) Warning: Undefined array key 0 in /in/2nUnl on line 20 $0: $0: 31 $0: 31 $0: 31 bool(true) bool(false) Warning: Trying to access array offset on value of type int in /in/2nUnl on line 33 $GLOBALS: $GLOBALS: 47 $GLOBALS: 47 $GLOBALS: 47
Output for 7.4.0 - 7.4.33
$a: 17 bool(false) bool(false) Notice: Undefined offset: 0 in /in/2nUnl on line 20 $0: $0: 31 $0: 31 $0: 31 bool(true) bool(false) Notice: Trying to access array offset on value of type int in /in/2nUnl on line 33 $GLOBALS: $GLOBALS: 47 $GLOBALS: 47 $GLOBALS: 47
Output for 5.3.0 - 5.3.29, 5.4.0 - 5.4.45, 5.5.0 - 5.5.38, 5.6.0 - 5.6.40, 7.0.0 - 7.0.33, 7.1.0 - 7.1.33, 7.2.0 - 7.2.34, 7.3.0 - 7.3.33
$a: 17 bool(false) bool(false) Notice: Undefined offset: 0 in /in/2nUnl on line 20 $0: $0: 31 $0: 31 $0: 31 bool(true) bool(false) $GLOBALS: $GLOBALS: 47 $GLOBALS: 47 $GLOBALS: 47
Output for 5.0.0 - 5.0.5, 5.1.1 - 5.1.6, 5.2.0 - 5.2.17
$a: 17 bool(false) bool(false) Notice: Undefined offset: 0 in /in/2nUnl on line 20 $0: $0: 31 $0: 31 $0: 31 bool(true) bool(false) $GLOBALS: $GLOBALS: 47 $GLOBALS: 47 $GLOBALS: 47
Output for 5.1.0
Fatal error: fatal flex scanner internal error--end of buffer missed in /in/2nUnl on line 42
Process exited with code 255.
Output for 4.3.0 - 4.3.11, 4.4.0 - 4.4.9
$a: 17 bool(false) bool(true) $0: 31 $0: 31 $0: 31 $0: 31 bool(true) bool(false) $GLOBALS: $GLOBALS: 47 $GLOBALS: 47 $GLOBALS: 47

preferences:
72.45 ms | 417 KiB | 5 Q