所以variable variables已存在。这意味着这是有效的
$a = 'test';
$$a = 'Hello';
echo ${'test'}; //outputs 'Hello'
但是现在我遇到了一些使用没有名字的变量的奇怪代码:
function test(&$numRows) {
$numRows = 5;
echo ' -- done test';
}
$value = 0;
test($value);
echo ' -- result is '.$value;
test(${''}); //variable without name
http://ideone.com/gTvayV Code fiddle
输出是:
- 完成测试 - 结果为5 - 完成测试
这意味着,代码不会崩溃。
现在我的问题是:当参数是没有名称的变量时,如果更改$numRows
值会发生什么?将价值写入必杀技吗? PHP变量是否等同于/dev/null
?
我无法找到任何具体的内容。
提前致谢
答案 0 :(得分:2)
${''}
是一个有效变量,其名称恰好是一个空字符串。如果你以前从未设置它,那么它是未定义的。
var_dump(isset(${''})); // if you have never set it before, it is undefined.
您没有看到任何错误,因为您已禁用NOTICE错误消息。
error_reporting(E_ALL);
ini_set('display_errors', 1);
echo ${''}; // Notice: Undefined variable:
您可以这样设置:
${''} = 10;
echo ${''}; // shows 10
答案 1 :(得分:1)
现在我的问题是:如果更改$ numRows值会发生什么 当参数是一个没有名字的变量?
没有名称的变量,PHP中的空字符串是一个完全有效的名称。
也许我错了,但在PHP中,所有变量都可以通过它们的名称(或更确切地说,它们的名称的字符串表示)来访问,并且因为空字符串仍然是一个字符串,所以它算作一个有效名称。
将变量视为数组键值对。您可以使用空字符串创建数组键:
$arr = [];
$arr[''] = 'appul';
var_dump($arr['']); // prints: string(5) "appul"
$arr[''] = 'ponka';
var_dump($arr['']); // prints: string(5) "ponka"
每当您访问$arr['']
时,您都会使用相同的值。
您也可以使用$ GLOBAL变量将所有变量作为字符串访问,这样您就可以检查您的"无名"变量:
${''} = 'ponka';
var_dump($GLOBALS['']); // prints: string(5) "ponka"
${''} = 'appul';
var_dump($GLOBALS['']); // prints: string(5) "appul"
这些价值会写入必杀技吗?这是PHP变量等同于/ dev / null吗?我无法找到任何有关此事的具体信息。
不,它没有进入必杀技,它静静地坐在全球空间中,访问它有点棘手,但除此之外,它是一个像其他任何人一样的正常变量。