在这种情况下,“&”符号代表什么?

3

我刚接触php和mysql,正在跟随phpacademy的youtube教程学习。其中有一个表单数据的部分,但是每个人都会遇到未定义索引错误(包括我自己)。我用&(和号)符号修复了它。但是在下面的情况下它是做什么的?为什么在$前面放置&符号可以解决错误?它与@相同吗?它只是抑制错误还是实际上修复了它?

$submit = &$_POST['submit'];

https://dev59.com/Z-o6XIcBkEYKwwoYTy4d - Jürgen Paul
https://dev59.com/j3A75IYBdhLWcg3wAD_x 和 https://dev59.com/AnM_5IYBdhLWcg3wdy_z - Mike B
1个回答

7
这段话的意思是,不要给$submit赋值,而是给它赋一个指向这个值的引用。如果你熟悉C语言和指针,这就像是一个指向值的指针,在访问它时会自动解引用。但是,PHP不允许指针算术或获取实际内存地址(与C不同)。
$a = 7;
$b = $a;
$c = &$a;
$c = 5;

echo $a, $b, $c; // 575

CodePad.

为了避免你提到的错误,你可以使用以下模式...

$submit = isset($_POST['submit']) ? $_POST['submit'] : 'default_value';

...or...

$submit = filter_input(INPUT_POST, 'submit');

它们不像C语言指针。 - Gabriel Santos
那么,这是修复未定义索引错误的好方法吗?我对此毫不了解... 哈哈哈 - Ryan Sinclair
@GabrielSantos 好的,所以你不能进行指针算术运算或获取实际地址,但它们有点相似。 - alex
我使用了 $submit = filter_input(INPUT_POST, 'submit');,它起作用了。不确定为什么,但它正在工作! - Ryan Sinclair
谢谢大家的快速和非常有帮助的建议!你们让学习所有这些变得更加简单! - Ryan Sinclair
显示剩余4条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接