@newaitix

Как внутри функции получить переменную?

$a=22;
function test(){
return $a;
}
echo test();

Почему это не работает ? Почему переменная a не доступна внутри функции ?
  • Вопрос задан
  • 94 просмотра
Решения вопроса 2
sabramovskikh
@sabramovskikh
Область видимости как бы
global $a пропишите
Ответ написан
@bkosun
<?php
$a = 1; /* глобальная область видимости */ 

function test()
{ 
    echo $a; /* ссылка на переменную в локальной области видимости */ 
} 

test();
?>

php.net/manual/ru/language.variables.scope.php
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
@402d
начинал с бейсика на УКНЦ в 1988
На сколько я понял Вы писали до этого на JavaScript.
https://medium.com/devschacht/glossary-of-modern-j...
обратите внимание на концепции
Чистота, Состояние

Управление состоянием важно для любого сложного приложения. Функции или компоненты с состоянием изменяют состояние и его историю, их труднее тестировать и отлаживать. Функции без состояния полагаются только на свои входные данные для создания данных выходных. Программа без состояния возвращает новое состояние, а не модифицирует существующее состояние.


Так вот в PHP а особенно после появления в нем ООП
использование global дурной тон.
Здесь сказывается кардинальное отличие PHP от JS.
При каждом запросе выполнение скрипта начинается с чистого листа, т.е. без специальных мер,
скрипт не знает, что делал пользователь до этого.
Ответ написан
Комментировать
@vadimek
Полуджун
Я бы сделал так
$a = 22;
$test = function () use ($a) {
return $a;
};
echo $test();
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
YCLIENTS Москва
от 200 000 до 350 000 ₽
Ведисофт Екатеринбург
от 25 000 ₽
ИТЦ Аусферр Магнитогорск
от 100 000 до 160 000 ₽