Задать вопрос
Этот вопрос закрыт для ответов, так как повторяет вопрос Как внутри функции получить переменную?
@vanyproduction

Почему не работает вызов array внутри функции?

Пример кода:
$obj = json_decode($content, true);

return $obj; //работает

function test() { return $obj; }
test(); // не работает

*метод вывода значения не имеет, функция почему-то ничего не содержит
  • Вопрос задан
  • 79 просмотров
Подписаться 1 Простой
Ответы на вопрос 3
Область видимости не та. Вот так сделайте
function test() {
 global $obj;
 return $obj; 
}
test(); // заработает
Ответ написан
proudmore
@proudmore
Никогда не используйте global, это зло, ведущее на самое дно.
Чтобы функция имела доступ к каким-то переменным, вам нужно передать эти объекты, или ссылки на них, в качестве аргумента функции.
В случае с лямбдой вы можете использовать use, как показано ниже.

$obj = json_decode($content, true);

return $obj; //работает

function test($obj) { return $obj; }
test(); //работает

function($obj){
    return $obj; //работает
}

function() use ($obj){
    return $obj; //работает
}
Ответ написан
Stalker_RED
@Stalker_RED
Очень похожий по сути вопрос, на который я только-что отвечал
Почему php скрипт игнорирует функцию?

Коротко: похоже, вы привыкли к тому, как работают замыкания в js. Но в большинстве других языков это не так работает.
Ответ написан
Ваш ответ на вопрос

Вопрос закрыт для ответов и комментариев

Потому что уже есть похожий вопрос.
Похожие вопросы