FAQ
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 ?

Search Discussions

  • Richard Quadling at Jun 29, 2011 at 3:06 pm

    On 29 June 2011 15:53, 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 ?
    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
  • Pascal COURTOIS at Jun 29, 2011 at 4:09 pm

    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...

    http://docs.php.net/manual/en/language.oop5.references.php
    thanks
  • Ángel González at Jun 29, 2011 at 10:20 pm

    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.

Related Discussions

Discussion Navigation
viewthread | post
Discussion Overview
groupphp-internals @
categoriesphp
postedJun 29, '11 at 2:53p
activeJun 29, '11 at 10:20p
posts4
users3
websitephp.net

People

Translate

site design / logo © 2022 Grokbase