php string bool to bool
Php string bool to bool
Чтобы определить булев тип, используйте ключевое слово TRUE или FALSE. Оба регистро-независимы.
Обычно используется некий оператор, который возвращает логическое выражение, а затем предает его управляющей конструкции.
Преобразование в тип Boolean
Для преобразования значения в булев тип используйте приведение типа (bool) или (boolean). Однако в большинстве случаев вам нет необходимости использовать приведение типа, поскольку значение будет автоматически преобразовано, если оператор, функция или управляющая конструкция требует булев аргумент.
При преобразовании в логический тип, следующие значения рассматриваются как FALSE:
пустая строка и строка «0»
массив с нулевыми элементами
объект с нулевыми переменными-членами
специальный тип NULL (включая неустановленные переменные)
Все остальные значения рассматриваются как TRUE (включая любой ресурс).
Внимание! -1 считается TRUE, как и любое ненулевое (отрицательное или положительное) число!
Работа с бинарными данными (тип boolean)
Cтроки могут содержать любые, в том числе и бинарные данные. Для работы с такими строками иногда
удобно использовать функции pack() и unpack().
Функция 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);
Функция unpack() выполняет действия, обратные pack() — распаковывает строку $data, пользуясь информацией о формате $format. Возвращает она ассоциативный массив, содержащий элементы распакованных данных. Строка $format задается немного в другом формате, чем в функции pack(), а именно, после каждого спецификатора (или после завершающего его числа) должно «впритык» следовать имя ключа в ассоциативном массиве. Разделяются параметры при помощи символа /. Пример:
В результирующий массив будут записаны элементы с ключами: chars1, chars2 и int. Как видим, если после спецификатора задано число, то к имени ключа будут добавлены номера 1, 2 и т. д., т. е. в массиве появятся несколько ключей, отличающихся суффиксами.
Когда бывают полезны функции pack() и unpack()? Например, вы считали участок GIF-файла, содержащий его размер в пикселах, и хотите преобразовать бинарную 32-битную ячейку памяти в формат, понятный PHP. Или, наоборот, стремитесь работать с файлами с фиксированным размером записи. В этом случае вам и пригодятся рассматриваемые функции. Вообще говоря, функции pack() и unpack() применяются сравнительно редко. Это связано с тем, что в PHP практически все действия, которые могут потребовать работы с бинарными данными (например, анализ файла с рисунком с целью определения его размера), уже реализованы в виде встроенных функций, например, с GIF-картинкой это GetImageSize().
Parsing a string into a boolean value in PHP
Today I was playing with PHP, and I discovered that the string values «true» and «false» are not correctly parsed to boolean in a condition, for example considering the following function:
It only seems to work with «1» and «0» values:
Is there a native function in PHP to parse «true» and «false» strings into boolean?
8 Answers 8
There is a native PHP method of doing this which uses PHP’s filter_var method:
Returns TRUE for «1», «true», «on» and «yes». Returns FALSE otherwise.
If FILTER_NULL_ON_FAILURE is set, FALSE is returned only for «0», «false», «off», «no», and «», and NULL is returned for all non-boolean values.
The reason is that all strings evaluate to true when converting them to boolean, except «0» and «» (empty string).
The following function will do exactly what you want: it behaves exactly like PHP, but will also evaluates the string «false» as false :
When converting to boolean, the following values are considered FALSE:
Every other value is considered TRUE (including any resource).
In PHP only «0» or the empty string coerce to false; every other non-empty string coerces to true. From the manual:
When converting to boolean, the following values are considered FALSE :
On a side note that could easily be condensed to
I recently needed a «loose» boolean conversion function to handle strings like the ones you’re asking about (among other things). I found a few different approaches and came up with a big set of test data to run through them. Nothing quite fit my needs so I wrote my own:
You can see the behavior for the test data I used as well as the results for several other functions here. It’s kind of hard to skim the results from that little iframe, so you can view the script output in a full page, instead (that URL is undocumented so this might not work forever). In case those links die some day, I put the code up on pastebin as well.
The line between what «ought to be true» and what oughtn’t is pretty arbitrary; the data I used is categorized based on my needs and aesthetic preferences, yours may differ.
Php string bool to bool
Syntax
Typically, the result of an operator which returns a bool value is passed on to a control structure.
Converting to boolean
Every other value is considered true (including any resource and NAN ).
User Contributed Notes 27 notes
This is why you should NEVER use the OR operator without explicit parentheses around the expression where it is being used.
Note for JavaScript developers:
In PHP, an empty array evaluates to false, while in JavaScript an empty array evaluates to true.
This is because in JavaScript, an array is an object, and, while it may not have any elements, it is still regarded as something.
Just a trap for young players who routinely work in both langauges.
Beware of certain control behavior with boolean and non boolean values :
// Consider that the 0 could by any parameters including itself
var_dump ( 0 == 1 ); // false
var_dump ( 0 == (bool) ‘all’ ); // false
var_dump ( 0 == ‘all’ ); // TRUE, take care
var_dump ( 0 === ‘all’ ); // false
// To avoid this behavior, you need to cast your parameter as string like that :
var_dump ((string) 0 == ‘all’ ); // false
?>
Just something that will probably save time for many new developers: beware of interpreting FALSE and TRUE as integers.
For example, a small function for deleting elements of an array may give unexpected results if you are not fully aware of what happens:
So you have to explicitly check for FALSE, otherwise you’ll probably loose some elements:
PHP does not break any rules with the values of true and false. The value false is not a constant for the number 0, it is a boolean value that indicates false. The value true is also not a constant for 1, it is a special boolean value that indicates true. It just happens to cast to integer 1 when you print it or use it in an expression, but it’s not the same as a constant for the integer value 1 and you shouldn’t use it as one. Notice what it says at the top of the page:
A boolean expresses a truth value.
It does not say «a boolean expresses a 0 or 1».
It’s true that symbolic constants are specifically designed to always and only reference their constant value. But booleans are not symbolic constants, they are values. If you’re trying to add 2 boolean values you might have other problems in your application.
It is correct that TRUE or FALSE should not be used as constants for the numbers 0 and 1. But there may be times when it might be helpful to see the value of the Boolean as a 1 or 0. Here’s how to do it.
/* To get it to display the number 0 for
a false value you have to typecast it: */
Note you can also use the ‘!’ to convert a number to a boolean, as if it was an explicit (bool) cast then NOT.
So you can do something like:
Note on the OR operator.
A previous comment notes the trap you can fall into with this operator. This is about its usefulness.
Both OR and || are short-circuited operators, which means they will stop evaluating once they reach a TRUE value. By design, OR is evaluated after assignment (while || is evaluated before assignment).
This has the benefit of allowing some simple constructions such as:
The second allows for an alternative value if a falsy one is regarded as insufficient. The following example
All this presupposes that 0 is also an unacceptable value in the situation.
Как преобразовать строку в boolean php
Строки всегда оценивают значение boolean true, если у них нет значения, которое считается «пустым» PHP (взято из документации для empty ):
Если вам нужно задать логическое значение на основе текстового значения строки, вам нужно будет проверить наличие или иное значение этого значения.
EDIT: приведенный выше код предназначен для ясности понимания. При фактическом использовании следующий код может быть более уместным:
Этот метод был отправлен @lauthiamkok в комментариях. Я отправляю его здесь как ответ, чтобы привлечь к нему больше внимания.
Строка «false» на самом деле считается значением «TRUE» помощью PHP. В документации говорится:
Чтобы явно преобразовать значение в boolean, используйте (bool) или (boolean) cast. Однако в большинстве случаев приведение не требуется, так как значение будет автоматически преобразовано, если для оператора, функции или структуры управления требуется логический аргумент.
См. Также Тип Жонглирование.
При преобразовании в boolean следующие значения считаются FALSE:
сама логическая ЛОЖЬ
целое число 0 (ноль)
пустая строка и строка «0»,
массив с нулевыми элементами
объект с нулевыми переменными-членами (только для PHP 4)
специальный тип NULL (включая неустановленные переменные)
Объекты SimpleXML, созданные из пустых тегов
Каждое другое значение считается TRUE (включая любой ресурс).
поэтому, если вы это сделаете:
У меня была аналогичная проблема, когда я сделал что-то вроде
Так как мой bool был превращен в укус json.
Чтобы преодолеть это, вы можете декодировать строку с помощью json_decode (). 😉
(обычно это должно работать с значениями bool, преобразованными в строку и отправленными на сервер также другими способами, кроме использования json)
Пожалуйста, отметьте в качестве ответа, если вы найдете это полезным, спасибо и пожелаете вам много солнца, ciao
вы можете использовать json_decode для декодирования того, что boolean
проще всего это сделать:
Выполняя это так, вы можете выполнить цикл «true», «TRUE», «false» или «FALSE» и получить значение строки в логическом виде.
Другие ответы более усложняют ситуацию. Этот вопрос – просто логический вопрос. Просто верьте свое утверждение.
Теперь ваш ответ будет либо
Вы также можете использовать метод settype!
Я делаю это таким образом, чтобы на любой логической строке строка «false» на логическую FALSE выполняла бы регистр без учета регистра, но будет вести себя с использованием обычных правил кастомизации php для всех остальных строк. Я думаю, что это лучший способ предотвратить неожиданное поведение.
Расширяя его ответ, я бы использовал:
Если ваша «логическая» переменная поступает из другого источника, вы можете использовать filter_var() filter.
strval сделает это и многое другое.
Я запутался в атрибутах shortcode wordpress, я решил написать пользовательскую функцию для обработки всех возможностей. может быть, это полезно для кого-то:
Простым способом является проверка массива значений, которые вы считаете истинными.
Вы должны иметь возможность использовать boolean using (bool), но я не уверен, не проверяя, работает ли это в строках «true» и «false».
Это может стоить популярности, хотя
Стоит знать, что следующее будет оцениваться логическим False при вводе внутри
Все остальные будут оцениваться как истинные.
How to Convert Boolean to String
I have a Boolean variable which I want to convert to a string:
But it tells me that string and String are not recognized functions.
How do I convert this Boolean to a string in the format of «true» or «false» in PHP?
15 Answers 15
The function var_export returns a string representation of a variable, so you could do this:
The second argument tells the function to return the string instead of echoing it.
Another way to do : json_encode( booleanValue )
You use strval() or (string) to convert to string in PHP. However, that does not convert boolean into the actual spelling of «true» or «false» so you must do that by yourself. Here’s an example function:
The other solutions here all have caveats (though they address the question at hand). If you are (1) looping over mixed-types or (2) want a generic solution that you can export as a function or include in your utilities, none of the other solutions here will work.
The simplest and most self-explanatory solution is:
But most developers reading your code will require a trip to http://php.net/var_export to understand what the var_export does and what the second param is.
1. var_export
Works for boolean input but converts everything else to a string as well.
Works for boolean input but converts everything else (ints, strings) to true/false.
3. json_encode()
Same issues as var_export and probably worse since json_encode cannot know if the string true was intended a string or a boolean.
Why just don’t do like this?:
This was the code I finally used:
Short and simple and easy to throw in a function too if you prefer.
boolval() works for complicated tables where declaring variables and adding loops and filters do not work. Example:
This works also for any kind of value:
My solution used below should never be used, LOL.
Here is why not.
To avoid repetition, the array containing the string representation of the Boolean can be stored in a constant that can be made available throughout the application.