Ответ 1
http://www.php.net/manual/en/language.types.integer.php
Обычно просто $myInt = (int)$myBoolean
должен работать, можете ли вы показать нам свой код в противном случае?
Есть ли встроенная функция для PHP, которая примет логическое значение и вернет свой целочисленный эквивалент? 0 для FALSE, 1 для TRUE?
Конечно, вы можете легко создать функцию для этого, я просто спрашиваю, есть ли встроенная функция внутри PHP. Я уже пробовал intval()
и отбрасывал его на (int)
, но они не работали, они возвращают 0 в обоих случаях TRUE и FALSE.
Изменить: проблема заключалась в том, что он действительно не был логическим, это была строка "false", "true", php не обнаружил сообщение jquery о том, что он прошел логическое. проблема решена, спасибо!
http://www.php.net/manual/en/language.types.integer.php
Обычно просто $myInt = (int)$myBoolean
должен работать, можете ли вы показать нам свой код в противном случае?
Просто добавьте "+" перед вашей переменной следующим образом:
$myBool = true;
var_dump(+$myBool);
ouputs: int(1);
Если вы получаете свою ценность от JSON I.E. Через AJAX POST значение будет входить как строка (как вы уже нашли). Путь к этому заключается в сравнении строки true/false, а затем отбрасывает bool на int
$requestBool = $_REQUEST['bool_value']; //This is 'true' or 'false'
$myInt = (int)($requestBool === 'true');
echo $myInt;
//returns: 0 or 1
Вы можете сделать несколько отливок за один раз:
$isTest = 'true';
(int)(bool)$isTest
echo $isTest; // this outputs 1
echo (int)true;
echo '<br>';
echo (int)false;
echo '<br>';
echo intval(true);
echo '<br>';
echo intval(false);
echo '<br>';
echo true + true;
Если вы не уверены в типе данных, см. пример ниже, он работает с строками, целыми числами и булерами.
<?php
$options = [ TRUE, FALSE, 'true', 'false', 1, 0, '1', '0', 'on', 'off', 'yes', 'no' ];
foreach ( $options as $option ) {
$bool = filter_var( $option, FILTER_VALIDATE_BOOLEAN ); // TRUE or FALSE
print (int) $bool . ' '; // 1 or 0
}
// Outputs: 1 0 1 0 1 0 1 0 1 0 1 0
?>
filter_var ($ var, FILTER_VALIDATE_BOOLEAN) вернет bool (true) или bool (false), а затем просто будет отлит как целое.
(PHP 5 >= 5.2.0, PHP 7)
filter_var - Фильтрует переменную с заданным фильтром
Использовать тип casting (bool):
var_dump((bool) 1); // bool(true)
var_dump((bool) 0); // bool(false)