2012-04-08 44 views
3

我是新來的PHP和MySQL。我在YouTube上遵循phpacademy的教程。有一部分是表單數據,但每個跟隨本教程的人(包括我自己)都有未定義的索引錯誤。我用&(&符號)符號固定它。但是在以下情況下它有什麼作用?爲什麼把&這個符號放在$的前面會停止這個錯誤?它是否與@相同,是隻是抑制了錯誤還是實際修復了錯誤?&(&符號)符號在這種情況下表示什麼?

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

http://stackoverflow.com/questions/3737139/reference-what-does-this-symbol-mean-in-php – Michelle 2012-04-08 06:15:00

+0

http://stackoverflow.com/questions/3526555/what-does-this-php-operator-means和http://stackoverflow.com/questions/1367454/what-do-operators-in-php-mean – 2012-04-08 06:44:24

回答

7

這意味着代替值分配給$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'); 
+0

等等,什麼?如何分配參考工作。 – Michelle 2012-04-08 06:12:40

+0

'他們不像C指針'(http://www.php.net/manual/en/language.references.whatare.php) – 2012-04-08 06:13:38

+0

所以這是修復未定義索引錯誤的好方法嗎?我對什麼都不熟悉... haha​​ha – 2012-04-08 06:14:18