Re: Why is variable not in scope?

From: Date: Sun, 28 Jul 2019 05:23:31 +0000
Subject: Re: Why is variable not in scope?
References: 1 2 3  Groups: php.general 
Request: Send a blank email to php-general+get-326875@lists.php.net to get a copy of this message
Actually, that's not true. Globals are available in included files as well. The only problem arises when you use them before assigning a value to the global variable you're using. On Sat, Jul 27, 2019 at 10:04 PM Jeffry Killen <jekillen@prodigy.net> wrote: > > > On Jul 27, 2019, at 8:47 PM, LinuxManMikeC <linuxmanmikec@gmail.com> > wrote: > > > > Functions don't automatically have access to global variables. Use the > 'global' keyword to declare what global variables you're going to use in > your function. > > > > function nav_list() { > > global $auth_array; > > // Code... > > } > > > > Also it will make a difference WHERE nav_list is defined: > If it is defined in a separate script file and included or required by > the calling script, it will not have access to $auth_array unless you > define it as an argument to nav_list and pass it in when nav_list is > called. > > The only way I know how to make a variable visible without having to > pass it by reference is > > class sampleClass > { > private static $test = 'Orange'; > public function showTest() > { > return self::$test; > } > } > > $test = new samleClass() > print $test->showTest(); // 'Orange' > > In your case > function nav_list($arrayArg) > { > // code > } > > nav_list($auth_array) //>> assuming this call is made in the scope where > $auth_array is defined ready to use. > > > > https://www.php.net/manual/en/language.variables.scope.php > > > > On Sat, Jul 27, 2019, 19:47 John <john.iliffe@iliffe.ca> wrote: > > There is probably another way to do this but I have spent a good few > hours > > trying to resolve it and I think there is something wrong with the way I > > understand the scope of variables in PHP, so an answer would be > appreciated. > > > > I have a PHP (7.1.3) programme that opens a database during > initialization, > > gathers an associative array of variables (pg_fetch_array) and then > closes the > > database. The array name is $auth_array. During actual display of the > page the > > values of the elements of the array are used to control what is (not) > displayed > > and lookup of the values is done using a separate function. > > > > At this point I can print_r() the array and it contains what I expect. > > > > In the next line, I call a user-defined function nav_list() where this > array is > > used in the form $auth_array['column name']. At this point I get a PHP > error > > "Got error 'PHP message: PHP Notice: Undefined variable: auth_array in > > /httpd/myprogramme/yrarcex.php on line 74\nPHP message: PHP Notice: > Undefined > > variable: auth_array .... . At this point I cannot print_r the array, > the same > > undefined variable message appears. > > > > I expected that auth_array would be in global scope. > > > > so I tried calling nav_list() with no arguments, then with the name of > the array > > as the only argument, and with the address of the array (&$auth_array) > and also > > with the explicit cast nav_list(array $auth_array) and I always get the > same > > error message. (not a data type error as suggested in the docs). > > > > So far as I can see I am following the online documentation at > > > > https://www.php.net/manual/en/functions.arguments.php > > > > exactly. > > > > The definition of nav_list() is; > > > > function nav_list() > > { > > if ($auth_array['u_....'] == 't') <---- this is line 74 as shown > > in > the error > > { > > // display something > > } > > } > > > > > >

« previous php.general (#326875) next »