Подтвердить что ты не робот

Изменение глобальной переменной внутри функции PHP

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

$var = "01-01-10";
function checkdate(){
     if("Condition"){
            $var = "01-01-11";
      }
}
4b9b3361

Ответ 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);