- False php что это
- Чтобы понять, что такое false и true проделаем пару манипуляций!
- Теперь сравним 1 и true.
- Вывод о «0» и «false»
- Вывод о типах «0» и «false»
- Вывод о «1» и «true»
- Проверим переменные на true.
- Проверим число 1 на true.
- Результат проверки числа на true
- Проверим число 0 на true.
- Булев
- Синтаксис
- Преобразование в булев тип
- Booleans
- Syntax
- Преобразование в логический
- PHP 8.2: true, false и null как самостоятельные типы
- Различие между void и null
- Обнуляемость в null типе
- true тип не принуждает
- Использование true в объединенных типах
- Проверка избыточности с bool типом
- Не допускается союз true|false
- Использование true в типах пересечений
- true тип в ковариантности и контравариантности
False php что это
Интересный поисковый запрос — «не понимаю смысла true и false» — давайте попробуем разобраться на пальцах!
Чтобы понять, что такое false и true проделаем пару манипуляций!
Очень сложно рассказать человеку, что-то очень эфемерное — в частности «что такое false и true«, но если рассмотрим этот вопрос на примерах, то сразу всё разъяснится!
Для того, чтобы понять, что такое «false и true» создадим условие:
Если «ноль» равен «false», то выведем на экран «0 == false»:
Давайте это условие разместим прямо здесь, смотрим результат выполнения php программы:
Вывод такой, что «ноль» и «false» — равны(по значению) — это не я говорю — это говорит сам PHP.
Теперь сравним 1 и true.
Создадим теперь второе условие и используем «1» и «true», если «1» равен «true», то выведем на экран 1 == true.
Прямо здесь давайте разместим это условие:
Вывод, что «1» и «true» — равны(по значению).
Если в первой части у вас не возникло проблем с пониманием написанного, то мы можем сделать следующий шаг!
Напишем такое условие, если ноль тождественно равен false, то выведем «0 === false», иначе «0 и false — тождественно не равны»
Вывод о «0» и «false»
Что «0» и «false» — равны по значению.
Чтобы разобраться с типом нам понадобится функция var_dump:
И такое же проделаем с false
Вывод о типах «0» и «false»
По типу «0» и «false» — никак не могут быть равны по типу!
Что же касается «1» и «true», то результаты и выводы будут аналогичные — не буду все те же действия повторять, перейдем сразу к выводам!
Вывод о «1» и «true»
«1» и «true» — равны по значению.
«1» и «true» — не равны по типу!
Надеюсь, что вы поняли что такое true и false
Если же нет, то рекомендую читать этот пункт, пока у вас не настанет прояснение!
Ведь «true и false» — это же так просто! смайлы
Проверим переменные на true.
Проверим число 1 на true.
Переменной $переменная_true присвоим значение 1 и проверим число на то, что вернет в условии на два и три равно:
Если число будет равно true, то выведем echo $true_1 + если число будет идентично true, то выведем echo $true_2
Результат проверки числа на true
Вывод, что единица — будет true только по значению, но не по типу. и это число(int) из одного знака.
Проверим число 0 на true.
Конечно же я знаю, какой будет результат, но для вас не очевидно!
Давайте проверим число «0» на true.
Переменной $переменная_true_0 присвоим значение 0
И проверим число на то, что вернет в условии на два и три равно, если число будет равно true, то выведем echo $true_1
Если число будет идентично true, то выведем echo $true_2
Булев
Это простейший тип. boolean выражает истинность значения. Он может быть либо TRUE , либо FALSE .
Синтаксис
Для указания boolean , используйте константы TRUE или FALSE . Обе они регистронезависимы.
Обычно, некоторый оператор возвращает boolean значение, которое потом передается управляющей конструкции.
// == это оператор, который проверяет
// эквивалентность и возвращает boolean
if ( $action == «show_version» ) echo «The version is 1.23» ;
>
?php
// это необязательно.
if ( $show_separators == TRUE ) echo «
\n» ;
>
// . потому что следующее имеет тот же самый смысл:
if ( $show_separators ) echo «
\n» ;
>
?>
Преобразование в булев тип
Для явного преобразования в boolean , используйте (bool) или (boolean). Однако, в большинстве случаев приведение типа необязательно, так как значение будет автоматически преобразовано, если оператор, функция или управляющая конструкция требует boolean аргумент.
При преобразовании в boolean , следующие значения рассматриваются как FALSE :
- само значение booleanFALSE
- integer 0 (ноль)
- float 0.0 (ноль)
- пустая строка, и строка «0»
- массив без элементов
- объект без полей (только для PHP 4)
- особый тип NULL (включая неустановленные переменные)
- Объекты SimpleXML, созданные из пустых тегов
Все остальные значения рассматриваются как TRUE (включая любой resource).
-1 рассматривается как TRUE , как и любое другое ненулевое (отрицательное или положительное) число!
var_dump ((bool) «» ); // bool(false)
var_dump ((bool) 1 ); // bool(true)
var_dump ((bool) — 2 ); // bool(true)
var_dump ((bool) «foo» ); // bool(true)
var_dump ((bool) 2.3e5 ); // bool(true)
var_dump ((bool) array( 12 )); // bool(true)
var_dump ((bool) array()); // bool(false)
var_dump ((bool) «false» ); // bool(true)
?>?php
Booleans
Это самый простой вид. Логическое значение выражает истинное значение. Это может быть true или false .
Syntax
Чтобы указать литерал типа bool, используйте константы true или false . Оба не чувствительны к регистру.
$foo = True; // assign the value TRUE to $foo ?>
Обычно результат оператора, который возвращает логическое значение, передается в структуру управления .
// == is an operator which tests // equality and returns a boolean if ($action == "show_version") < echo "The version is 1.23"; > // this is not necessary. if ($show_separators == TRUE) < echo "
\n"; > // . because this can be used with exactly the same meaning: if ($show_separators) < echo "
\n"; > ?>
Преобразование в логический
Чтобы явно преобразовать значение в bool, используйте приведение типов (bool) или (boolean) . Однако в большинстве случаев приведение не требуется, поскольку значение будет автоматически преобразовано, если для оператора, функции или управляющей структуры требуется аргумент типа bool.
При преобразовании в bool следующие значения считаются false :
- булеваfalse сама по себе
- целое число 0 (ноль)
- с плавающей точкой с 0,0 и -0,0 (ноль)
- пустая строка и строка «0»
- массив с нулевыми элементами
- специальный тип NULL (включая неустановленные переменные)
- Объекты SimpleXML, созданные из пустых элементов без атрибутов, т. Е. Элементов, не имеющих ни дочерних элементов, ни атрибутов.
Любое другое значение считается true (включая любой ресурс и NAN ).
-1 считается true , как и любое другое ненулевое (отрицательное или положительное) число!
var_dump((bool) ""); // bool(false) var_dump((bool) "0"); // bool(false) var_dump((bool) 1); // bool(true) var_dump((bool) -2); // bool(true) var_dump((bool) "foo"); // bool(true) var_dump((bool) 2.3e5); // bool(true) var_dump((bool) array(12)); // bool(true) var_dump((bool) array()); // bool(false) var_dump((bool) "false"); // bool(true) ?>
PHP 8.2
Для любого из типов int, float, string, bool и resource преобразование значения в результаты массива с нулевым скаляром индекса одного элемента, который был преобразован.
Объявления типов могут быть добавлены к аргументам функций,возвращаемым значениям и,начиная с версии PHP 7.4.0,к свойствам классов.
PHP 8.2: true, false и null как самостоятельные типы
Еще в PHP 8.0 была добавлена поддержка Union Types, что позволило объявить тип как объединение двух или более типов. Он разрешал false, true и null, как один из возможных типов для объединенных типов, но запрещал их использование в качестве самостоятельных типов.
До версии PHP 8.2 можно было использовать null и только false только как части Union Types:
function foo(): string|null <>
function strpos(): int|false <>
Попытка использовать null, false, true типы как самостоятельные типы (т.е. не являющиеся частью объединенных типов) приводила к фатальной ошибке компиляции в версиях PHP PHP 8.0 и PHP 8.1:
Fatal error: Null can not be used as a standalone type in . on line .
Fatal error: False can not be used as a standalone type in . on line .
И приходилось использовать PhpDoc для предоставления более точной информации о возвращаемом типе:
class User extends Model
/**
* @return false
*/
public function isAdmin(): bool
return false;
>
>
Начиная с PHP 8.2 можно писать так и не будет ошибок:
class User extends Model
public function isAdmin(): false
return false;
>
>
false, true, null можно использовать как самостоятельный тип везде, где PHP принимает тип:
class Foo
private true $processed;
private false $focused;
public function process(string|int|true $value): true <>
public function focus(int|false $value): false <>
>
Это делает систему типов PHP более выразительной и полной, чтобы иметь возможность точнее объявлять типы возврата, аргумента и свойства.
Различие между void и null
Обратите внимание, что функции, объявленные с возвращаемым типом null, должны явно возвращать return null, иначе вызов функции приведет к исключению TypeError. Функции, которые не возвращают значение явно, либо из-за отсутствия оператора return, либо из-за отсутствия возвращаемого значения (return;), могут продолжать использовать тип void в качестве возвращаемого типа.
В следующем примере выдастся исключение TypeError, так как он должен был быть объявлен с void типом, а не null возвращаемым типом.
function foo(): null <>
foo();
TypeError: foo(): Return value must be of type null, none returned in .
Если возвращаемый тип не является null, то объявление функции с возвращаемым типом void или never является более подходящим подходом.
Обнуляемость в null типе
Если тип объявлен null, он не может быть помечен как «nullable» с помощью синтаксиса ?null, так как это приводит к избыточному объявлению типа. PHP выдает ошибку во время компиляции:
function doNotMakeSense(): ?null <>
Fatal error: null cannot be marked as nullable in . on line .
true тип не принуждает
Когда аргумент, свойство или возвращаемый тип объявлены как true, PHP не преобразует принудительно любой другой тип в true. Это имеет место быть, даже если в коде отключены строгие типы ( strict_types ) и даже для значений, которые в противном случае принудительно выполняются, как true в нестрогих сравнениях.
Например, следующий вызов функции не приводит целочисленное значение 1 к true, и в результате получается TypeError:
function foo(true $value) <>
foo(1);
TypeError: foo(): Argument #1 ($value) must be of type true, int given, called in . on line . and defined in .
Использование true в объединенных типах
true тип может использоваться как часть Union Types, если true тип не является избыточным, или использоваться вместе с типом false.
Ниже приведен пример объявления типа объединения, в котором используется true тип:
function sendEmail(true|string): true return true;
>
sendEmail(true);
Тип PHP bool по сути является объединенным типом true|false. Однако во избежание двусмысленности применяются два из следующих ограничений.
Проверка избыточности с bool типом
true тип нельзя использовать в сочетании с bool типом, потому что bool тип уже включает в себя true тип. Попытка объявить тип объединения bool приводит к фатальной ошибке компиляции:
function foo(true|bool $value) <>
Fatal error: Duplicate type true is redundant in . on line .
Не допускается союз true|false
Поскольку bool тип по сути такой же, как true|false, использование true|false в качестве типа объединения не допускается:
function foo(true|false $value) <>
Fatal error: Type contains both true and false, bool should be used instead in . on line .
Использование true в типах пересечений
true тип вообще нельзя использовать в типах пересечений . Тип пересечения с true типом приводит к ошибке компиляции:
function foo(true&false $value) <>
Fatal error: Type true cannot be part of an intersection type in . on line .
true тип в ковариантности и контравариантности
Тип true считается подтипом bool типа, и PHP также следует стандартным правилам ковариантности и контравариантности по отношению к true типу.
Пример ковариации bool, в котором возвращаемый тип заменяется true типом, а тип объединения сужается в подклассе.
class Foo public function test(): bool <>
public function test2(): string|true <>
>
class FooBar extends Foo public function test(): false <>
public function test2(): true <>
>
Пример контравариантности true, когда типизированный параметр в test() расширяется до bool типа, а тип объединения в test2() расширяется:
class Foo public function test(true $value): void <>
public function test2(true|string $value): void <>
>
class FooBar extends Foo public function test(bool $value): void <>
public function test2(true|string|int $value): void <>
>
Влияние обратной совместимости
До PHP 8.2 нельзя было использовать true, false и null как отдельные типы. PHP 8.2 и более поздние версии позволяют использовать их как самостоятельные типы, приложения с PHP ниже версии PHP 8.2, которым необходимо объявлять true , false и null типы, могут использовать комментарии PHPDoc для дополнительной точности и прибегать к использованию bool типа для совместимости со старыми версиями PHP:
/**
* @param true $value
* @return false
*/
function foo(bool $value): bool <>