你可以在PHP中使用带空格的变量吗?

Arn*_*rno 1 php variables space names

我在PHP中搞乱变量变量,所以我提出了代码:

$a = 'two words';  
$$a = 'something';  
echo $$a;  // outputs something
echo "$two words"; // error since $two doesn't exist
Run Code Online (Sandbox Code Playgroud)

我只是试图理解如果我们有一个带空格的字符串,PHP将如何表现,并尝试从中创建一个变量变量.它似乎仍然存储变量与空格,因为我做了var_dump($GLOBALS);,我有这个:

'a' => string 'two words' (length=9)  
'two words' => string 'something' (length=9) 
Run Code Online (Sandbox Code Playgroud)

我可以通过$GLOBALS['two words']出现两个问题来访问"两个单词"变量:

  1. 我可以用某种方式直接访问它$吗?我已经阅读过你需要用大括号({$two words}或者我假设${two words})得到整个变量的地方,但这不起作用.
  2. 你真的可以在PHP中使用带空格的变量吗?我尝试使用包含空格的键创建一个关联数组,并且工作正常:

    $a['a space'] = 1;
    echo $a['a space']; // 1
    
    Run Code Online (Sandbox Code Playgroud)

dec*_*eze 7

echo "$two words"; // error since $two doesn't exist
Run Code Online (Sandbox Code Playgroud)

这个问题是字符串插值规则将停止在变量名中无效的第一个字符.它并不特定于变量变量,它特定于字符串插值.

这样做:

echo ${'two words'};
Run Code Online (Sandbox Code Playgroud)

但由于这是相当尴尬的,并且在有效变量名称的所有情况下都不起作用(例如字符串插值),所以你真的不应该这样做.