Функция не возвращает значение - PullRequest
1 голос
/ 02 июля 2011

По какой-то причине эта функция не возвращает значение ciao:

$a = "ciao";

function a() {
    return $a;
}

Я понятия не имею, почему.

Ответы [ 3 ]

3 голосов
/ 02 июля 2011

Функции могут возвращать только те переменные, которые они имеют в своем локальном пространстве, называемом областью действия:

$a = "ciao";

function a() {
    $a = 'hello`;
    return $a;
}

Возвращает hello, поскольку в a() $a является собственной переменной.Если вам нужна переменная внутри функции, передайте ее в качестве параметра:

$a = "ciao";

function a($a) {
    return $a;
}
echo a($a); # "ciao"

Кстати, если вы включите УВЕДОМЛЕНИЯ для сообщения (error_reporting(-1);), PHP уведомит васчто return $a в вашем исходном коде использовалась неопределенная переменная.

3 голосов
/ 02 июля 2011

В PHP функции не имеют доступа к глобальным переменным. Используйте global $a в теле функции или передайте значение $ a в качестве параметра.

2 голосов
/ 02 июля 2011

$a не входит в область действия функции.

PHP не работает с замыканием, например с областью блоков, с которой работает JS, например, если вы хотите получить доступ к внешней переменной в функции, вы должны передать ее, которая имеет смысл, или использовать global, чтобы сделать ее доступной , который нахмурился.

$a = "ciao";

function a() {
    global $a;
    return $a;
}

или со стилем закрытия в PHP5.3 +

function a() use ($a) {
    return $a;
}
...