Переключатель логического значения / инвертировать - PullRequest
58 голосов
/ 05 января 2011

Есть ли функция для переключения / инвертирования значения boolean в PHP?

Как ... ярлык для:

if($boolean === true){
    $boolean = false;
}else{
    $boolean = true;
}

Ответы [ 7 ]

122 голосов
/ 05 января 2011

Да

$boolean = !$boolean;

если это не логическое значение, вы можете использовать троичную конструкцию:

$int = ($some_condition ? 1 : 2); // if $some_condition is true, set 1
                                  // otherwise set 2
5 голосов
/ 14 мая 2016

Если вы хотите кратчайший код, XOR логическое с 1:

$boolean ^= 1;

Строго это возвращает int, а не логическое.Он не работает так же, как $boolean = !$boolean (и немного менее эффективен), но для большинства целей должен выполнять свою работу.

5 голосов
/ 04 декабря 2014

Как насчет использования функции абсолютного значения abs(), $ val может быть "1" или "0", и вы хотите инвертировать его:

$val = abs($val-=1);

Логика:

Всегда вычитая «1» из числа и исключая «знак».

1 - 1 = 0
abs(0) = 0

0 - 1 = -1
abs(-1) = 1
1 голос
/ 21 сентября 2016

Просто используйте !, чтобы инвертировать результат, чтобы он мог выглядеть так: $ boolean =! (bool) $ result;

0 голосов
/ 24 декабря 2018

вы можете сделать это в одну строку:

<?php
$val = 0 
$val = $val ==1?0:1;  
?>
0 голосов
/ 10 июля 2012

логический выбор в одно касание:

$ детектор =! $ Подборщик = $ детектор;

0 голосов
/ 05 января 2011

bool может быть ИСТИНА или ЛОЖЬ.

использование: (логическое значение) $ red = varbool (false);
echo $ red;

для true вернет ноль и один для false

function varbool($val){ 

    $val +=(-1);
    $val *= (-1);   
    return $val;
}
...