- PHP: Логический тип
- Задание
- Определения
- Булев
- Синтаксис
- Преобразование в булев тип
- Как вывести bool php
- Преобразование в тип Boolean
- Работа с бинарными данными (тип boolean)
- boolval
- Описание
- Список параметров
- Возвращаемые значения
- Примеры
- Смотрите также
- User Contributed Notes 8 notes
- is_bool
- Описание
- Список параметров
- Возвращаемые значения
- Примеры
- Смотрите также
- User Contributed Notes 3 notes
PHP: Логический тип
Кроме арифметических операций со школы нам известны операции сравнения. Например, 5 > 4 . Это звучит как вопрос: «5 больше 4?». В данном случае ответ «да». В других случаях ответом может быть «нет» (например, для 3 ).
Операции сравнения не имеют привязки к числам. Сравнивать можно практически всё что угодно, например, строки. Каждый раз, когда мы входим на какой-то сайт, внутри происходит сравнение введенных логина и пароля с теми, какие есть в базе. И только если они есть, нас пускают во внутрь (аутентифицируют).
Языки программирования адаптировали все математические операции сравнения практически в неизменном виде. Единственное серьезное отличие – операторы равенства и неравенства. В математике для этого используется обычное равно = , но в программировании такое встречается не часто. Во многих языках символ = используется для присваивания значений переменным, поэтому для сравнения взяли == или === .
Список операций сравнения:
- меньше
- меньше или равно
- > больше
- >= больше или равно
- === равно
- !== не равно
Небольшая ремарка: для равенства и неравенства также существуют операторы == и != , которые мы не будем использовать из-за потенциальной опасности. Мы поговорим об этом в будущих уроках.
Логическая операция типа 5 > 4 или $password === $text — это выражение, и его результат — специальное значение true («истина») или false («ложь»). Это новый для нас тип данных — bool. Он содержит всего лишь два этих значения.
Наряду со строками (string) и целыми и рациональными числами, тип bool (булев) — это один из примитивных типов данных в PHP.
Попробуем написать примитивную функцию, которая принимает на вход возраст ребенка и определяет, младенец ли он. Младенцами считаются дети до года:
Пользуемся тем фактом, что любая операция — это выражение, поэтому единственной строчкой функции пишем «вернуть то значение, которое получится в результате сравнения $age ».
В зависимости от пришедшего аргумента, сравнение будет либо истинным ( true ), либо ложным ( false ), а return вернёт этот результат.
Вызовем функцию и выведем на экран результат. Для вывода bool нужно использовать var_dump() , а не print_r() :
А теперь проверим ребенка, которому полгода:
Задание
Напишите функцию isPensioner() , которая принимает возраст в качестве единственного аргумента и проверяет, является ли этот возраст пенсионным. Пенсионным считается возраст 60 лет и больше.
Определения
Логический тип (bool) — тип данных с двумя возможными значениями: true (истина) и false (ложь).
Источник
Булев
Это простейший тип. 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 , как и любое другое ненулевое (отрицательное или положительное) число!
Источник
Как вывести bool php
Это простейший тип. Он выражает истинность значения — это может быть либо TRUE, либо FALSE. Булев тип был введен в PHP4.
Чтобы определить булев тип, используйте ключевое слово TRUE или FALSE. Оба регистро-независимы.
= True ; // присвоить $x значение TRUE
?>
Обычно используется некий оператор, который возвращает логическое выражение, а затем предает его управляющей конструкции.
// == это оператор, который проверяет
// эквивалентность и возвращает булево значение
if ( $action == «показать_версию» ) <
echo «Версия 1.23» ;
>
// это не обязательно.
if ( $show_separators == TRUE ) <
echo » » ;
>
// . потому что вы можете просто написать
if ( $show_separators ) <
echo » » ;
>
?>
Преобразование в тип Boolean
Для преобразования значения в булев тип используйте приведение типа (bool) или (boolean). Однако в большинстве случаев вам нет необходимости использовать приведение типа, поскольку значение будет автоматически преобразовано, если оператор, функция или управляющая конструкция требует булев аргумент.
При преобразовании в логический тип, следующие значения рассматриваются как FALSE:
Сам булев FALSE
пустая строка и строка «0»
массив с нулевыми элементами
объект с нулевыми переменными-членами
специальный тип NULL (включая неустановленные переменные)
Все остальные значения рассматриваются как TRUE (включая любой ресурс).
Внимание! -1 считается TRUE, как и любое ненулевое (отрицательное или положительное) число!
((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)
?>
Работа с бинарными данными (тип boolean)
Cтроки могут содержать любые, в том числе и бинарные данные. Для работы с такими строками иногда
удобно использовать функции pack() и unpack().
pack(string $format [,mixed $args, . ])
Функция pack() упаковывает заданные аргументы в бинарную строку, которая затем и возвращается. Формат параметров, а также их количество, задается при помощи строки $format, которая представляет собой набор однобуквенных спецификаторов форматирования — наподобие тех, которые указываются в sprintf(), но только без знака %. После каждого спецификатора может стоять число, которое отмечает, сколько информации будет обработано данным спецификатором. А именно, для форматов a, A, h и H число задает, какое количество символов будет помещено в бинарную строку из тех, что находятся в очередном параметре-строке при вызове функции (то есть, определяется размер поля для вывода строки). В случае @ оно определяет абсолютную позицию, в которую будут помещены следующие данные. Для всех остальных спецификаторов следующие за ними числа задают количество аргументов, на которые распространяется действие данного формата. Вместо числа можно указать *, в этом случае подразумевается, что спецификатор действует на все оставшиеся данные. Вот полный список спецификаторов формата:
a — строка, свободные места в поле заполняются символом с кодом 0;
A — строка, свободные места заполняются пробелами;
h — шестнадцатеричная строка, младшие разряды в начале;
H — шестнадцатеричная строка, старшие разряды в начале;
c — знаковый байт (символ);
C — беззнаковый байт;
s — знаковое короткое целое (16 битов, порядок байтов определяется архитекту-
рой процессора);
S — беззнаковое короткое целое;
n — беззнаковое целое (16 битов, старшие разряды в конце);
v — беззнаковое целое (16 битов, младшие разряды в конце);
i — знаковое целое (размер и порядок байтов определяется архитектурой);
I— беззнаковое целое;
l — знаковое длинное целое (32 бита, порядок байтов определяется архитекту-
рой);
L — беззнаковое длинное целое;
N — беззнаковое длинное целое (32 бита, старшие разряды в конце);
V — беззнаковое целое (32 бита, младшие разряды в конце);
f — число с плавающей точкой (зависит от архитектуры);
d — число с плавающей точкой двойной точности (зависит от архитектуры);
x — символ с нулевым кодом;
X — возврат назад на 1 байт;
@ — заполнение нулевым кодом до заданной абсолютной позиции.
Немало, не правда ли? Вот пример использования этой функции:
// Целое, целое, все остальное — символы
$bindata = pack(«nvc*», 0x1234, 0x5678, 65, 66);
После выполнения приведенного кода в строке $bindata будет содержаться 6 байтов в такой последовательности: 0x12, 0x34, 0x78, 0x56, 0x41, 0x42 (в шестнадцатеричной системе счисления).
unpack(string $format, string $data)
Функция unpack() выполняет действия, обратные pack() — распаковывает строку $data, пользуясь информацией о формате $format. Возвращает она ассоциативный массив, содержащий элементы распакованных данных. Строка $format задается немного в другом формате, чем в функции pack(), а именно, после каждого спецификатора (или после завершающего его числа) должно «впритык» следовать имя ключа в ассоциативном массиве. Разделяются параметры при помощи символа /. Пример:
В результирующий массив будут записаны элементы с ключами: chars1, chars2 и int. Как видим, если после спецификатора задано число, то к имени ключа будут добавлены номера 1, 2 и т. д., т. е. в массиве появятся несколько ключей, отличающихся суффиксами.
Когда бывают полезны функции pack() и unpack()? Например, вы считали участок GIF-файла, содержащий его размер в пикселах, и хотите преобразовать бинарную 32-битную ячейку памяти в формат, понятный PHP. Или, наоборот, стремитесь работать с файлами с фиксированным размером записи. В этом случае вам и пригодятся рассматриваемые функции. Вообще говоря, функции pack() и unpack() применяются сравнительно редко. Это связано с тем, что в PHP практически все действия, которые могут потребовать работы с бинарными данными (например, анализ файла с рисунком с целью определения его размера), уже реализованы в виде встроенных функций, например, с GIF-картинкой это GetImageSize().
Источник
boolval
(PHP 5 >= 5.5.0, PHP 7, PHP 8)
boolval — Возвращает логическое значение переменной
Описание
Возвращает значение типа bool , релевантное переданному значению value .
Список параметров
Скалярное значение, которое надо привести к типу bool .
Возвращаемые значения
Приведённое к типу bool значение value .
Примеры
Пример #1 Пример использования boolval()
Результат выполнения данного примера:
Смотрите также
- floatval() — Возвращает значение переменной в виде числа с плавающей точкой
- intval() — Возвращает целое значение переменной
- strval() — Возвращает строковое значение переменной
- settype() — Задаёт тип переменной
- is_bool() — Проверяет, является ли переменная булевой
- Преобразование типов
User Contributed Notes 8 notes
To anyone like me who came here looking for a way to turn any value into a 0/1 that will fit into a MySQL boolean (tinyint) field:
= (int) filter_var ( $valToCheck , FILTER_VALIDATE_BOOLEAN );
?>
tinyint will be 0 (zero) for values like string «false», boolean false, int 0
tinyint will be 1 for values like string «true», boolean true, int 1
Useful if you are accepting data that might be from a language like Javascript that sends string «false» for a boolean false.
function is_true($val, $return_null=false) <
$boolval = ( is_string($val) ? filter_var($val, FILTER_VALIDATE_BOOLEAN, FILTER_NULL_ON_FAILURE) : (bool) $val );
return ( $boolval===null && !$return_null ? false : $boolval );
>
is_true(new stdClass); // true
is_true([1,2]); // true
is_true([1]); // true
is_true([0]); // true
is_true(42); // true
is_true(-42); // true
is_true(‘true’); // true
is_true(‘on’) // true
is_true(‘off’) // false
is_true(‘yes’) // true
is_true(‘no’) // false
is_true(‘ja’) // false
is_true(‘nein’) // false
is_true(‘1’); // true
is_true(NULL); // false
is_true(0); // false
is_true(‘false’); // false
is_true(‘string’); // false
is_true(‘0.0’); // false
is_true(‘4.2’); // false
is_true(‘0’); // false
is_true(»); // false
is_true([]); // false
I believe that the double negation !! can perform the same task with the same result if your PHP is not up2date
Источник
is_bool
(PHP 4, PHP 5, PHP 7, PHP 8)
is_bool — Проверяет, является ли переменная булевой
Описание
Проверяет, является ли данная переменная булевой.
Список параметров
Возвращаемые значения
Возвращает true , если value является переменной типа bool , или false в противном случае.
Примеры
Пример #1 Пример использования is_bool()
// Так как $a является булевой переменной, функция вернёт true
if ( is_bool ( $a ) === true ) <
echo «Да, это булевая переменная» ;
>
// Так как $b не является булевой переменной, функция вернёт false
if ( is_bool ( $b ) === false ) <
echo «Нет, это не булевая переменная» ;
>
?>
Смотрите также
- is_float() — Проверяет, является ли переменная числом с плавающей точкой
- is_int() — Проверяет, является ли переменная целым числом
- is_string() — Проверяет, является ли переменная строкой
- is_object() — Проверяет, является ли переменная объектом
- is_array() — Определяет, является ли переменная массивом
User Contributed Notes 3 notes
It should be stated that this function returns true if the _type_ of it’s argument is boolean. It does not convert or coerce the value to a boolean type, not sure why so many comments focus on how to do this.
However, if you arrived here looking for a solution to convert a value to a boolean type, use this:
The function Michael Smith published doesn’t do the work as it should.
To check if a variable is boolean is one thing, to evaluate if the value of a variable represents a boolean condition (true or false) is another.
Here a simple function that checks the status of the received variable in regards to boolean equivalencies (case insensitive).
/**
* Check «Booleanic» Conditions 🙂
*
* @param [mixed] $variable Can be anything (string, bol, integer, etc.)
* @return [boolean] Returns TRUE for «1», «true», «on» and «yes»
* Returns FALSE for «0», «false», «off» and «no»
* Returns NULL otherwise.
*/
function is_enabled ( $variable )
<
if (!isset( $variable )) return null ;
return filter_var ( $variable , FILTER_VALIDATE_BOOLEAN , FILTER_NULL_ON_FAILURE );
>
?>
Of course, it is a simplistic approach, but for the majority of cases it will do the job right.
And, just to put thing in the right perspective, here’s a real function that does what Phill disclosed:
/**
* Convert $variable to boolean (adapted from Phill answer)
*
* @param [mixed] $variable Can be anything
* @return [boolean] Returns the booelan equivalent to $variable based on Zend Enegine interpretation
*/
function to_bool ( $variable )
<
return (bool) $variable ;
>
?>
I hope it helps someone. Happy coding.
The function in the last comment also converts the string ‘false’ to a true boolean. Here’s a function that does what I think was intended:
function toBool ( $var ) <
if (! is_string ( $var )) return (bool) $var ;
switch ( strtolower ( $var )) <
case ‘1’ :
case ‘true’ :
case ‘on’ :
case ‘yes’ :
case ‘y’ :
return true ;
default:
return false ;
>
>
Источник