在这种情况下,&(和号)符号是啥意思?
Posted
技术标签:
【中文标题】在这种情况下,&(和号)符号是啥意思?【英文标题】:What Does the & (ampersand) symbol mean in this circumstance?在这种情况下,&(和号)符号是什么意思? 【发布时间】:2012-04-21 02:12:15 【问题描述】:我是 php 和 mysql 的新手。我在 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 好的,所以你不能进行指针运算或获取实际地址,但它们有点相似。以上是关于在这种情况下,&(和号)符号是啥意思?的主要内容,如果未能解决你的问题,请参考以下文章