更改和初始化函数中的变量

I was wondering if it's possible to change and initialize variables in a function without passing arguments to the function. Here is what I want to achieve:

$foo = 'Lorem';
$array = array();
foobar($foo);
function foobar(){
    if (strlen($foo)== 1)
        $bar = 'Ipsum';
    else
        $array[] = 'error';
}

fubar();
function fubar(){
    if (empty($fouten))
        echo $bar;
}

$foo is a local (uninitialized) variable inside a function. It is different from the global variable $foo ($GLOBALS['foo']).

You have two ways:

$foo;
$bar;
$array = array();

function foobar(){
    global $foo, $array, $bar;
    if (strlen($foo)== 1)
        $bar = 'Ipsum';
    else
        $array[] = 'error';
}

or by using the $GLOBAL array …

This is not really good practice though and will become a maintenance nightmare with all those side effects

Functions in php can be given arguments that have default values. The code you posted as written will give you notices for undefined variables. Instead, you could write:

function foobar($foo = null) {
    if($foo) { // a value was passed in for $foo 
    }
    else { // foo is null, no value provided
    }
}

Using this function, neither of the below lines will produce a notice

foobar();
foobar('test');