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