Si hago una copia de una variable de referencia. ¿La nueva variable es un puntero o contiene el valor de la variable a la que se refería el puntero?PHP: hacer una copia de una variable de referencia
Respuesta
Tiene el valor. Si usted quiere señalar, utilice el operador &
copiar otra referencia:
$a = 'test'; $b = &$a; $c = &$b;
No digas "punto". pensará que hay alguna diferencia entre $ a, $ b y $ c (como un puntero y un apuntado). – Artefacto
Vamos a hacer una prueba rápida:
<?php
$base = 'hello';
$ref =& $base;
$copy = $ref;
$copy = 'world';
echo $base;
salida es hello
, por lo tanto, $copy
no es una referencia a %base
.
Lo que debería esperarse: el punto de que '$ ref' sea una referencia a' $ base' es que '$ copy = $ ref' debe tener exactamente el mismo efecto que' $ copy = $ base'. – Tgr
Esto me hizo entender las referencias mucho mejor. Por alguna razón, pensé que para copiar una referencia podría '$ copy = $ ref;'. Ahora entiendo que es como una desreferencia y copia los datos a los que hace referencia la referencia. Creo que el uso de punteros C hace que esto sea confuso, ya que tiene que eliminar la referencia manualmente. – Lightbulb1
@ Lightbulb1: Esto se debe a que las referencias de PHP son más parecidas a las referencias de C++ que a las de C/C++. ;) – Crozin
Let Me MURK el agua con este ejemplo:
$a = array (1,2,3,4);
foreach ($a as &$v) {
}
print_r($a);
foreach ($a as $v) {
echo $v.PHP_EOL;
}
print_r($a);
Salida:
Array
(
[0] => 1
[1] => 2
[2] => 3
[3] => 4
)
1
2
3
3
Array
(
[0] => 1
[1] => 2
[2] => 3
[3] => 3
)
Puede encontrar la respuesta aquí: http://stackoverflow.com/a/14854568/1353874 – miro
Su ejemplo es ** intencionalmente confuso **. después de que 'foreach ($ cualquier cosa como & $ v) {} 'variable' $ v' mantendrá la referencia al último elemento de la matriz (mientras esto es confuso, es el comportamiento correcto), debe 'unset ($ v)' o keep en mente que '$ v' es una referencia. ** Pro-tip: use var_dump() en lugar de print_r(), mostrará & referencias en matrices ** –
- 1. Detectando si una variable de PHP es una referencia/referencia
- 2. PHP eliminar "referencia" de una variable.
- 3. ¿Cómo hacer una copia de un objeto sin referencia?
- 4. Crear una referencia a una variable (similar a "= &" de PHP)?
- 5. PHP ¿Cómo saber si una variable es una referencia?
- 6. ¿Puedo hacer referencia a una variable usando una cadena?
- 7. ¿Hacer referencia a una función en una variable?
- 8. Pasar una variable por referencia a una extensión PHP
- 9. Cómo hacer referencia a una variable de miembro de constante estática en PHP
- 10. ¿Cómo se crea explícitamente una copia de una variable en PHP?
- 11. Referencia una variable dentro de una variable en JMeter
- 12. cómo hacer referencia a una variable dinámicamente en javascript
- 13. ¿Quieres hacer una copia independiente de UIBezierPath?
- 14. Android: ¿Es posible hacer una copia de una Vista?
- 15. ¿El Java para cada ciclo devuelve una referencia, o una copia de referencia?
- 16. ¿Cómo hacer una copia de seguridad de la base de datos MySQL en PHP?
- 17. ¿Cómo hacer una copia profunda de una matriz?
- 18. ¿Tiene la asignación de otra variable a una cadena de realizar una copia o aumentar el número de referencia
- 19. Devolución de una referencia a una variable local o temporal
- 20. cómo hacer una copia de seguridad incremental en MySQL
- 21. PHP: ¿Insertar una referencia en una matriz?
- 22. std :: vector inserta una copia o referencia de un objeto?
- 23. ¿Podemos hacer una copia inteligente en Python?
- 24. Almacenar una referencia en otra variable
- 25. Usando una variable para hacer referencia a otra variable en Bash
- 26. Cuándo usar una variable variable en PHP?
- 27. ¿Es posible hacer referencia a un elemento específico de una matriz anónima en PHP?
- 28. Hacer una variable de entorno sobrevivir ENDLOCAL
- 29. C: Haciendo una copia profunda de una estructura ... haciendo una copia superficial de una estructura
- 30. ¿Es posible hacer referencia a una variable con una cadena interpolada?
Las referencias no son punteros . Consulte http://php.net/manual/en/language.references.arent.php – Artefacto
Algunas veces debe usarlas, por ejemplo, al implementar el offsetget. Aunque no cabe duda de que las referencias en PHP son un desastre. – Artefacto