Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

php function variable scope

Tags:

php

I was wondering if i have a function like this:

function isAdmin ($user_id) {

    $admin_arr = array(1, 2);

    foreach ($admin_arr as $value) {

        if ($value == $user_id) {
            return true;
        }
    }

    return false;
}

Could i make an array outside of that function as a global array and use it inside the function without sending it through as a parameter, also instead declaring a new admin array inside the function as i just did above? How would i do this?

Regards, Alexander

like image 430
Alexander Avatar asked May 06 '11 13:05

Alexander


People also ask

What is the scope of a variable in a function?

A scope is a region of the program and broadly speaking there are three places, where variables can be declared: Inside a function or a block which is called local variables, In the definition of function parameters which is called formal parameters. Outside of all functions which is called global variables.

Does PHP have function scope?

Very simple: PHP has function scope. That's the only kind of scope separator that exists in PHP. Variables inside a function are only available inside that function. Variables outside of functions are available anywhere outside of functions, but not inside any function.

What are the 4 variable scopes of PHP?

Summary. PHP has four types of variable scopes including local, global, static, and function parameters.

What is the default scope of any variable and function in PHP?

Any variable used inside a function is by default limited to the local function scope.


2 Answers

To answer literal question:

// Global variable
$admin_arr = array(1, 2);

function isAdmin ($user_id) {

    // Declare global
    global $admin_arr;

    foreach ($admin_arr as $value) {

        if ($value == $user_id) {
            return true;
        }
    }

return false;
}

Documentation here: http://php.net/manual/en/language.variables.scope.php

To answer the REAL question: Avoid global at all costs. You are introducing a plethora of error prone code into your application. Relying on global variables is entering a world of pain and makes your functions less useful.

Avoid it unless you absolutely see no other way.

like image 105
Wesley Murch Avatar answered Oct 06 '22 00:10

Wesley Murch


you have to do this with the global keyword

here an example

$arr = array('bar');
function foo() {
    global $arr;
    echo array_pop($arr);
}
foo();
like image 28
peaceman Avatar answered Oct 06 '22 01:10

peaceman