Re: Why is variable not in scope?
| From: | Sam Hobbs | Date: | Sun, 28 Jul 2019 01:57:52 +0000 |
| Subject: | Re: Why is variable not in scope? | ||
| References: | 1 | Groups: | php.general |
| Request: | Send a blank email to php-general+get-326869@lists.php.net to get a copy of this message | ||
You probably need to show more code. If you can show how/where auth_array is defined and how nav_list is called then that would help.
The best way to get help is to create a complete small sample that re-creates the problem. That might seem like a lot of work but I have done it. Sometimes I solve the problem myself when I do that.
John <mailto:john.iliffe@iliffe.ca> Saturday, July 27, 2019 6:46 PM 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 } }