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

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

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

【问题讨论】:

标签: php mysql html send


【解决方案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 好的,所以你不能进行指针运算或获取实际地址,但它们有点相似。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-04-04
  • 2017-03-28
  • 2016-08-26
  • 2014-10-27
  • 2019-10-15
  • 2020-11-03
相关资源
最近更新 更多