Se faccio una copia di una variabile di riferimento. La nuova variabile è un puntatore o mantiene il valore della variabile a cui si riferiva il puntatore?PHP: creazione di una copia di una variabile di riferimento
risposta
Detiene il valore. Se si voleva puntare, utilizzare l'operatore &
per copiare un altro riferimento:
$a = 'test'; $b = &$a; $c = &$b;
Non dire "punto". penserà che ci sia qualche differenza tra $ a, $ b e $ c (come un puntatore e un punto). – Artefacto
Facciamo un test rapido:
<?php
$base = 'hello';
$ref =& $base;
$copy = $ref;
$copy = 'world';
echo $base;
uscita è hello
, quindi $copy
non è un riferimento a %base
.
Quale dovrebbe essere previsto - il punto di '$ ref' è un riferimento a' $ base' è che '$ copy = $ ref' dovrebbe avere lo stesso effetto di' $ copy = $ base'. – Tgr
Questo mi ha fatto capire molto meglio i riferimenti. Per qualche ragione, credo che per copiare un riferimento potresti '$ copy = $ ref;'. Ora capisco che è come un dereferenziamento e copia i dati a cui fa riferimento il riferimento. Penso che l'uso di puntatori C rende questo confuso come devi dereferenziare manualmente. – Lightbulb1
@ Lightbulb1: Questo perché i riferimenti di PHP sono più come riferimenti C++ che puntatori C/C++. ;) – Crozin
Permettetemi di Murk l'acqua con questo esempio:
$a = array (1,2,3,4);
foreach ($a as &$v) {
}
print_r($a);
foreach ($a as $v) {
echo $v.PHP_EOL;
}
print_r($a);
uscita:
Array
(
[0] => 1
[1] => 2
[2] => 3
[3] => 4
)
1
2
3
3
Array
(
[0] => 1
[1] => 2
[2] => 3
[3] => 3
)
Puoi trovare la risposta qui: http://stackoverflow.com/a/14854568/1353874 – miro
Il tuo esempio è ** intenzionalmente confuso **. dopo 'foreach ($ qualsiasi cosa come & $ v) {}' variabile '$ v' manterrà il riferimento all'ultimo elemento dell'array (mentre questo è confuso, è un comportamento corretto), dovresti o 'unset ($ v)' o mantenere in mente che '$ v' è un riferimento. ** Suggerimento: usa var_dump() invece di print_r(), mostrerà & riferimenti negli array ** –
- 1. Creazione di una copia di una vista?
- 2. PHP rimuove "riferimento" da una variabile.
- 3. Clona/Copia una variabile di mappa Javascript
- 4. Come si crea in modo esplicito una copia di una variabile in PHP?
- 5. rilevare se una variabile PHP è un riferimento/riferimento
- 6. Haskell Riferimento a una variabile di tipo
- 7. Creazione di istanza di una classe PHP con una stringa
- 8. Creazione di un costruttore di copia per una lista collegata
- 9. Salvataggio di una risposta di arricciatura in una variabile php
- 10. Creazione di una sitemap XML con PHP
- 11. Creazione di una tabella dinamica con PHP
- 12. costruttore di copia: una copia profonda di una classe astratta
- 13. Creazione di una variabile di conteggio in esecuzione in R?
- 14. Shallow riferimento copia nella variabile in Perl
- 15. Come creare una copia di un oggetto senza riferimento?
- 16. Come creare una copia dell'oggetto di classe senza alcun riferimento?
- 17. PHP Come sapere se una variabile è un riferimento?
- 18. Creazione di directory durante una copia utilizzando IFileOperation
- 19. creazione di una copia indipendente del repository svn
- 20. Creazione di un indice su una variabile di tabella
- 21. Passa per riferimento Evita di creare una nuova variabile?
- 22. Passare una variabile per riferimento in un'estensione PHP
- 23. Stampa di una gif da una variabile con php
- 24. Come sostituire una variabile all'interno di una stringa con PHP?
- 25. Copia l'output di una variabile JavaScript negli Appunti
- 26. Riferimento alle variabili di sessione in PHP
- 27. Creazione di una funzione di cancellazione ricorsiva (in php)
- 28. Creazione di una coda di posta elettronica in PHP?
- 29. Copia di una funzione lambda con i parametri di default per una variabile
- 30. PHP/SQLite - Copia di una tabella dal disco alla memoria
riferimenti non sono puntatori . Vedere http://php.net/manual/en/language.references.arent.php – Artefacto
A volte è necessario utilizzarli, ad esempio quando si implementa l'offset. Anche se senza dubbio i riferimenti in PHP sono un disastro. – Artefacto