False php что это

False php что это

Интересный поисковый запрос — «не понимаю смысла true и false» — давайте попробуем разобраться на пальцах!

Чтобы понять, что такое false и true проделаем пару манипуляций!

Очень сложно рассказать человеку, что-то очень эфемерное — в частности «что такое false и true«, но если рассмотрим этот вопрос на примерах, то сразу всё разъяснится!
Для того, чтобы понять, что такое «false и true» создадим условие:

Если «ноль» равен «false», то выведем на экран «0 == false»:

Давайте это условие разместим прямо здесь, смотрим результат выполнения php программы:

Вывод такой, что «ноль» и «false» — равны(по значению) — это не я говорю — это говорит сам PHP.

Теперь сравним 1 и true.

Создадим теперь второе условие и используем «1» и «true», если «1» равен «true», то выведем на экран 1 == true.

Прямо здесь давайте разместим это условие:

Читайте также:  Выполнить post запрос python

Вывод, что «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» ;
>

// это необязательно.
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)
?>

Источник

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.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 <>

Источник

Оцените статью