Related Links : Search Engine Optimization | | Search Engine Marketing | Online Marketing | Freelance Programmer| SEO Thailand | SEO Expert | SEO services | PHP Programmer Thailand | SEO Tutorial | What is SEO |

  Home Our SEO Services SEO Expert Consultant Php Programmer Scripts| Email : sachin {at} jainsachin {dot} com

PHP | What References Do | Manual | Tutorial | Help

SEO Services



Website Programming in PHP / MYSQL



Friends


    What References Do

    What References Do

    PHP references allow you to make two variables to refer to the same content. Meaning, when you do:

    <?php
    $a 
    =& $b;
    ?>
    it means that $a and $b point to the same content.

    Note: $a and $b are completely equal here, that's not $a is pointing to $b or vice versa, that's $a and $b pointing to the same place.

    Note: If array with references is copied, its values are not dereferenced. This is valid also for arrays passed by value to functions.

    Note: If you assign, pass or return an undefined variable by reference, it will get created.

    Example #1 Using references with undefined variables

    <?php
    function foo(&$var) { }

    foo($a); // $a is "created" and assigned to null

    $b = array();
    foo($b['b']);
    var_dump(array_key_exists('b'$b)); // bool(true)

    $c = new StdClass;
    foo($c->d);
    var_dump(property_exists($c'd')); // bool(true)
    ?>

    The same syntax can be used with functions, that return references, and with new operator (in PHP 4.0.4 and later):

    <?php
    $bar 
    =& new fooclass();
    $foo =& find_var($bar);
    ?>
    Since PHP 5, new return reference automatically so using =& in this context is deprecated and produces E_STRICT level message.

    Note: Not using the & operator causes a copy of the object to be made. If you use $this in the class it will operate on the current instance of the class. The assignment without & will copy the instance (i.e. the object) and $this will operate on the copy, which is not always what is desired. Usually you want to have a single instance to work with, due to performance and memory consumption issues.
    While you can use the @ operator to mute any errors in the constructor when using it as @new, this does not work when using the &new statement. This is a limitation of the Zend Engine and will therefore result in a parser error.

    Warning

    If you assign a reference to a variable declared global inside a function, the reference will be visible only inside the function. You can avoid this by using the $GLOBALS array.

    Example #2 Referencing global variables inside function

    <?php
    $var1 
    "Example variable";
    $var2 "";

    function 
    global_references($use_globals)
    {
        global 
    $var1$var2;
        if (!
    $use_globals) {
            
    $var2 =& $var1// visible only inside the function
        
    } else {
            
    $GLOBALS["var2"] =& $var1// visible also in global context
        
    }
    }

    global_references(false);
    echo 
    "var2 is set to '$var2'\n"// var2 is set to ''
    global_references(true);
    echo 
    "var2 is set to '$var2'\n"// var2 is set to 'Example variable'
    ?>
    Think about global $var; as a shortcut to $var =& $GLOBALS['var'];. Thus assigning other reference to $var only changes the local variable's reference.

    Note: If you assign a value to a variable with references in a foreach statement, the references are modified too.

    Example #3 References and foreach statement

    <?php
    $ref 
    0;
    $row =& $ref;
    foreach (array(
    123) as $row) {
        
    // do something
    }
    echo 
    $ref// 3 - last element of the iterated array
    ?>

    The second thing references do is to pass variables by-reference. This is done by making a local variable in a function and a variable in the calling scope reference to the same content. Example:

    <?php
    function foo(&$var)
    {
        
    $var++;
    }

    $a=5;
    foo($a);
    ?>
    will make $a to be 6. This happens because in the function foo the variable $var refers to the same content as $a. See also more detailed explanations about passing by reference.

    The third thing reference can do is return by reference.


    SEO Tutorial / Articles





    Php / Mysql Tutorial



    Articles



      Portfolio


      SEO by Jainsachin