Can't access global variable inside function Can't access global variable inside function php php

Can't access global variable inside function


You have to pass it to the function:

<?php    $sxml = new SimpleXMLElement('<somexml/>');    function foo($sxml){        $child = $sxml->addChild('child');    }    foo($sxml);?>

or declare it global:

<?php    $sxml = new SimpleXMLElement('<somexml/>');    function foo(){        global $sxml;        $child = $sxml->addChild('child');    }    foo();?>

If the variable isn't global but is instead defined in an outer function, the first option (passing as an argument) works just the same:

<?php    function bar() {        $sxml = new SimpleXMLElement('<somexml/>');        function foo($sxml) {            $child = $sxml->addChild('child');        }        foo($sxml);    }    bar();?>

Alternatively, create a closure by declaring the variable in a use clause.

<?php    function bar() {        $sxml = new SimpleXMLElement('<somexml/>');        function foo() use(&$xml) {            $child = $sxml->addChild('child');        }        foo();    }    bar();?>


You need to explicitly invite the global variable into the functions scope:

function foo(){    global $sxml;    $child = $sxml->addChild('child');}


Use the global keyword to declare $sxml inside your function.

<?php    $sxml = new SimpleXMLElement('<somexml/>');    function foo(){    global   $sxml;      $child = $sxml->addChild('child');    }    foo();?>