如果我制作参考变量的副本。新变量是一个指针还是它保存指针所指的变量的值?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. C++参考本地变量与参考
- 3. 德尔福:参考VS副本的TADoConnection变量分配
- 4. 如何制作一个没有参考的对象的副本?
- 5. 在本地参考变量
- 6. 参考参数返回副本
- 7. Jquery参考中的PHP变量
- 8. C++:如何制作作为参考返回的字符的副本?
- 9. VBA Powerpoint参考变量的文本框
- 10. 返回本地变量的参考
- 11. C++参考副本的麻烦(STL对)
- 12. 封闭而不是参考的副本
- 13. 如何命名作为参数副本的变量?
- 14. PHP变量:引用或副本
- 15. 参考变量AS3
- 16. Moq'ing参考变量
- 17. PHP常量参考
- 18. 返回闭包的变量是创建一个副本而不是参考
- 19. PHP中的变量作为参考回报?
- 20. JSTL参考其他变量的变量
- 21. 制作一个变量的副本并添加到Arraylist
- 22. Obj-C:参考还是副本?
- 23. 参考变量作为值 - VB6
- 24. 使用变量作为参考VBA
- 25. 作为参考传递控制参考
- 26. bash副本与变量
- 27. 参考变量名动态
- 28. Bash间接变量参考
- 29. 参考一个表变量
- 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