par
devlop78 » 16 mai 2010, 02:16
<?php
$arr = array(1, 2, 3, 4);
foreach ($arr as &$value) {
$value = $value * 2;
}
// $arr vaut maintenant array(2, 4, 6, 8)
unset($value); // Stop la référence sur le dernier élément
?>
D'après la documentation on a le tableau qui est modifié. Or dans mon exemple, mon tableau par la suite était modifié mais pas comme il fallait. Le code délivre par la suite un code JSON qui donne par exemple VAR1 VAR2 VAR2 au lieu de donner VAR1 VAR2 VAR3.
J'ai d'ailleurs eu un moment le même problème dans une fonction où je faisais :
fonction x (&arg) {
unset ($arg);
}
Ceci ne fait ... rien. Alors que :
fonction x (&arg) {
$arg = '';
}
fonctionne. La fonction qui appelle cette fonction a bien comme variable $arg locale une variable vide dans le second cas, alors que la variable n'a pas bougé d'un poil dans le premier. Je me suis dit pour ça (j'avais d'autres problèmes que de lire la doc à ce moment) que le unset ne pouvait se faire vu que c'était une référence.
[quote]<?php
$arr = array(1, 2, 3, 4);
foreach ($arr as &$value) {
$value = $value * 2;
}
// $arr vaut maintenant array(2, 4, 6, 8)
unset($value); // Stop la référence sur le dernier élément
?> [/quote]
D'après la documentation on a le tableau qui est modifié. Or dans mon exemple, mon tableau par la suite était modifié mais pas comme il fallait. Le code délivre par la suite un code JSON qui donne par exemple VAR1 VAR2 VAR2 au lieu de donner VAR1 VAR2 VAR3.
J'ai d'ailleurs eu un moment le même problème dans une fonction où je faisais :
fonction x (&arg) {
unset ($arg);
}
Ceci ne fait ... rien. Alors que :
fonction x (&arg) {
$arg = '';
}
fonctionne. La fonction qui appelle cette fonction a bien comme variable $arg locale une variable vide dans le second cas, alors que la variable n'a pas bougé d'un poil dans le premier. Je me suis dit pour ça (j'avais d'autres problèmes que de lire la doc à ce moment) que le unset ne pouvait se faire vu que c'était une référence.