Hi,
Is there any way that a variable can be changed within a function without passing it by reference ?
I have a code like that:
function myfunction($var)
{
}
I thought that since there's no reference in any way to the variable it cannot be changed in the function. Am I wrong ?
Hi,
Is there any way that a variable can be changed within a function without passing it by reference ?
I have a code like that:
function myfunction($var)
{<some code>
print_r($var); => prints $var which is an object
anotherfunction($var); // call by value
print_r($var); => $var has changed}
I thought that since there's no reference in any way to the variable it cannot be changed in the function. Am I wrong ?
For variables ...
<?php
$variable = 'rock';
function paper() {
global $variable;
$variable = FUNCTION;
}
function sissors() {
$GLOBALS['variable'] = FUNCTION;
}
echo $variable, PHP_EOL;
paper();
echo $variable, PHP_EOL;
sissors();
echo $variable, PHP_EOL;
?>
For objects, $var is always an alias to an object identifier which
points to the same object...
http://docs.php.net/manual/en/language.oop5.references.php
--
Richard Quadling
Twitter : EE : Zend : PHPDoc
@RQuadling : e-e.com/M_248814.html : bit.ly/9O8vFY : bit.ly/lFnVea
Le 29/06/2011 17:00, Richard Quadling a écrit :
For objects, $var is always an alias to an object identifier which
points to the same object...
thanks
Pascal COURTOIS wrote:
Hi,
Is there any way that a variable can be changed within a function without passing it by reference ?
I have a code like that:
function myfunction($var)
<some code> print_r($var); => prints $var which is an object anotherfunction($var); // call by value print_r($var); => $var has changed
{}
I thought that since there's no reference in any way to the variable it cannot be changed in the function. Am I wrong ?
Maybe the prototype of anotherfunction() receives it by reference.
Another option would be that <some code> sets some global as a reference
to $var, and $var is changed through it.
If you have such problem, you should provide a test case. But it's
probably a bug in your code that will get solved when piecing it.