在这种情况下,&(和号)符号是啥意思?

Posted

技术标签:

【中文标题】在这种情况下,&(和号)符号是啥意思?【英文标题】:What Does the & (ampersand) symbol mean in this circumstance?在这种情况下,&(和号)符号是什么意思? 【发布时间】:2012-04-21 02:12:15 【问题描述】:

我是 phpmysql 的新手。我在 youtube 上关注 phpacademy 的教程。有一个部分是表单数据,但是每个遵循教程的人(包括我自己)都遇到了未定义的索引错误。我用&(和号)符号修复了它。但是在以下情况下它会做什么?为什么将 & 符号放在 $ 前面会停止错误?它与@相同吗,它只是抑制错误还是实际上修复了它?

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

【问题讨论】:

***.com/questions/3737139/… ***.com/questions/3526555/… 和 ***.com/questions/1367454/… 【参考方案1】:

这意味着不是将值分配给$submit,而是将对该值的引用分配给$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';

...或...

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

【讨论】:

They are not like C pointers (php.net/manual/en/language.references.whatare.php) 那么这是修复未定义索引错误的好方法吗?我什么都不熟悉……哈哈哈 @RyanSinclair 不是。试试$submit = isset($_POST['submit']) ? $_POST['submit'] : ''; In PHP 5.3 ALL objects are passed by reference so neither ampersand has any legitimate need any longer. The correct edit is to remove BOTH ampersands. @GabrielSantos 好的,所以你不能进行指针运算或获取实际地址,但它们有点相似。

以上是关于在这种情况下,&(和号)符号是啥意思?的主要内容,如果未能解决你的问题,请参考以下文章

>& 是啥意思?

符号“&$checked”是啥意思

C++11 中的 T&&(双 & 符号)是啥意思?

这个符号是啥意思“&=”? [复制]

SQL 选择符号是啥 ||意思是?

Rust 类型中的 & 符号是啥意思?