如果我製作參考變量的副本。新變量是一個指針還是它保存指針所指的變量的值?PHP:製作參考變量的副本
回答
它擁有價值。如果你想指出,使用&
運營商複製其他參考:
$a = 'test'; $b = &$a; $c = &$b;
不要說「點」。他會認爲$ a,$ b和$ c之間有一些區別(如指針和指針)。 – Artefacto 2010-05-15 13:51:24
讓我們做一個簡單的測試:
<?php
$base = 'hello';
$ref =& $base;
$copy = $ref;
$copy = 'world';
echo $base;
輸出爲hello
,因此$copy
不是%base
參考。
這應該是預期的 - '$ ref'作爲'$ base'的引用的地方在於'$ copy = $ ref'應該和'$ copy = $ base'具有完全相同的效果。 – Tgr 2010-05-15 13:06:56
這讓我更好地理解了參考。由於某種原因,我雖然複製一個引用,你可以'$ copy = $ ref;'。現在我明白這就像一個解引用,並複製引用參考的數據。我認爲使用C指針會讓你感到困惑,因爲你必須手動解引用。 – Lightbulb1 2014-07-02 13:46:04
@ Lightbulb1:這是因爲PHP的引用比C/C++指針更像C++引用。 ;) – Crozin 2014-07-02 14:22:35
讓我黑暗與本例中,水:
$a = array (1,2,3,4);
foreach ($a as &$v) {
}
print_r($a);
foreach ($a as $v) {
echo $v.PHP_EOL;
}
print_r($a);
輸出:
Array
(
[0] => 1
[1] => 2
[2] => 3
[3] => 4
)
1
2
3
3
Array
(
[0] => 1
[1] => 2
[2] => 3
[3] => 3
)
你可以在這裏找到答案:http://stackoverflow.com/a/14854568/1353874 – miro 2015-10-22 14:03:17
你的例子是**故意混淆**。在'foreach($ any作爲&$ v){}'變量'$ v'後面會保存對最後一個數組元素的引用(儘管這很混亂,這是正確的行爲),你應該'unset($ v)'或者保留記住'$ v'是一個參考。 ** Pro-tip:使用var_dump()代替print_r(),它將在數組中顯示&引用** – 2017-02-18 20:36:55
- 1. PHP中的參考變量
- 2. 作業前的本地變量參考
- 3. C++參考本地變量與參考
- 4. 德爾福:參考VS副本的TADoConnection變量分配
- 5. 如何製作一個沒有參考的對象的副本?
- 6. WCF服務參考副本
- 7. 在本地參考變量
- 8. 參考參數返回副本
- 9. Jquery參考中的PHP變量
- 10. C++:如何製作作爲參考返回的字符的副本?
- 11. C++參考副本的麻煩(STL對)
- 12. 封閉而不是參考的副本
- 13. 有本地變量參考的C++
- 14. 返回本地變量的參考
- 15. VBA Powerpoint參考變量的文本框
- 16. 如何命名作爲參數副本的變量?
- 17. PHP變量:引用或副本
- 18. 參考變量AS3
- 19. Java - 參考變量
- 20. Moq'ing參考變量
- 21. C++參考變量
- 22. PHP常量參考
- 23. 返回閉包的變量是創建一個副本而不是參考
- 24. PHP中的變量作爲參考回報?
- 25. JSTL參考其他變量的變量
- 26. Obj-C:參考還是副本?
- 27. 製作一個變量的副本並添加到Arraylist
- 28. VBA中的變量副本
- 29. Objective C:實例變量作爲參考
- 30. 傳遞變量作爲參考
引用不是指針。請參閱http://php.net/manual/en/language.references.arent.php – Artefacto 2010-05-15 13:06:55
有時您必須使用它們,例如實施offsetget時。儘管PHP中的引用毫無疑問是一團糟。 – Artefacto 2010-05-15 13:49:25