Как изменить глобальную переменную в условии PHP

Если не использовать условия, а менять переменную в функции, то всё работает и она меняется на 1, а условиями так и остаётся 0. Извините, если вопрос очень простой, я просто совсем чайник еще в php)

$password_err = 0;

function register(&$err) {
    if ($_POST['password'] == $_POST['password_confirmation']) {
        $login = $_POST['login'];
        $password = $_POST['password'];
        setcookie('login', $login);
        setcookie('login', $password);
        header('Location: ' . '/index.php');
    }
    else {
        $err++;
    }
}

function verify($password_err) {
    if (1!=1) {
        echo 'ываываывп';
    }
    else {
        register($password_err);
    }
};

if($_POST) {
    verify($password_err);
}

Ответы (1 шт):

Автор решения: nomnoms12

Функция verify принимает аргумент по значению, а не по ссылке:

function verify($password_err) {}
//             ^^

Поэтому в функции register вы изменяете значение локальной переменной $password_err функции verify:

function verify($password_err) {
    if (1!=1) {
        echo 'ываываывп';
    }
    else {
        // $password_err == 0
        register($password_err);
        // $password_err == 1
    }
};

Чтобы изменить глобальную переменную, объявите verify аналогично register:

function verify(&$password_err) {}
//             ^^^
→ Ссылка