Я пытаюсь изменить переменную, которая находится вне функции, изнутри функции. Потому что, если дата проверки функции превышает определенную сумму, мне нужно изменить год для даты в начале кода.
$var = "01-01-10"; function checkdate(){ if("Condition"){ $var = "01-01-11"; } }
A. Используйте глобальное ключевое слово для импорта из области приложения.
$var = "01-01-10"; function checkdate(){ global $var; if("Condition"){ $var = "01-01-11"; } } checkdate();
B. Используйте массив $ GLOBALS .
$var = "01-01-10"; function checkdate(){ if("Condition"){ $GLOBALS['var'] = "01-01-11"; } } checkdate();
C. Передайте переменную по ссылке .
$var = "01-01-10"; function checkdate(&$funcVar){ if("Condition"){ $funcVar = "01-01-11"; } } checkdate($var);
Просто используйте global
ключевое слово так:
$var = "01-01-10"; function checkdate(){ global $var; if("Condition"){ $var = "01-01-11"; } }
Любая ссылка на эту переменную будет тогда глобальной.
Все ответы здесь хороши, но … вы уверены, что хотите это сделать?
Изменение глобальных переменных изнутри функций, как правило, является плохой идеей, поскольку она может очень легко вызвать код спагетти, где переменные изменяются по всей системе, функции взаимозависимы друг с другом и т. Д. Это настоящий беспорядок.
Позвольте мне предложить несколько альтернатив:
1) Объектно-ориентированное программирование
2) Функция возвращает значение, которое назначается вызывающим.
например $ var = checkdate();
3) Наличие значения, хранящегося в массиве, который передается в функцию по ссылке
function checkdate (& $ values) {if (condition) {$ values ["date"] = "01-01-11"; }}
Надеюсь это поможет.
Попробуйте этот пропуск по ссылке
$var = "01-01-10"; function checkdate(&$funcVar){ if("Condition"){ $funcVar = "01-01-11"; } } checkdate($var);
или Попробуйте сделать то же самое, что и выше, сохраняя эту функцию как таковой.
$var = "01-01-10"; function checkdate($funcVar){ if("Condition"){ $funcVar = "01-01-11"; } } checkdate(&$var);