По какой-то причине следующий код ничего не распечатывает:
$bool_val = (bool)false; echo $bool_val;
Но следующий код печатает 1:
$bool_val = (bool)true; echo $bool_val;
Есть ли лучший способ распечатать 0 или false, если $ bool_val является ложным, чем добавление оператора if?
Изменить: изменил второй оператор от false до true
echo $bool_val ? 'true' : 'false';
Или если вы хотите только вывод, когда он ложный:
echo !$bool_val ? 'false' : '';
Это самый простой способ сделать это:
$text = var_export($bool_value,true); echo $text;
или
var_export($bool_value)
Если второй аргумент неверен, он будет выводить результат напрямую.
Нет, поскольку другой вариант изменяет движок Zend, и трудно было бы назвать это «лучшим способом».
Редактировать:
Если вы действительно этого хотели, вы можете использовать массив:
$boolarray = Array(false => 'false', true => 'true'); echo $boolarray[false];
Мне это нравится, чтобы напечатать это
var_dump ($var);
Это будет выводить логическое значение как есть, вместо 1/0.
$bool = false; echo json_encode($bool); //false
Попробуйте преобразовать логическое значение в целое число?
echo (int)$bool_val;
На мой взгляд, лучший способ добиться желаемого результата – с помощью var_export
.
Это всегда будет печатать значение (а не скрывать null
или false
), но оно даст вам информацию о том, что вы печатаете. var_export
сообщает вам, какое значение у вас есть, оно пытается буквально распечатать ваше значение, чтобы вы могли скопировать / вставить результат в php.
var_export(true); // true var_export(false); // false var_export(1); // 1 var_export(0); // 0 var_export(null); // NULL var_export('true'); // 'true' <-- note the quotes var_export('false'); // 'false'
Конечно, если вы строго хотите «логическую» строку, вы можете использовать ее как логическое, как в следующем примере, но будьте осторожны при кастинге «gotchas»!
var_export((bool) true); // true var_export((bool) false); // false var_export((bool) 1); // true var_export((bool) 0); // false var_export((bool) ''); // false var_export((bool) 'true'); // true var_export((bool) null); // false // !! CAREFUL WITH CASTING !! var_export((bool) 'false'); // true var_export((bool) '0'); // false
echo(var_export($var));
Когда $var
является логической переменной, будет напечатано значение true
или false
.
Это дает 0
или 1
:
intval($bool_val);
Руководство PHP: функция intval
Вы можете использовать тернарный оператор
echo false ? 'true' : 'false';
Опция %b
для sprintf () преобразует логическое значение в целое число:
echo sprintf("False will print as %b", false); //False will print as 0 echo sprintf("True will print as %b", true); //True will print as 1
Если вы не знакомы с этим: вы можете присвоить этой функции произвольное количество параметров, в то время как первая должна быть вашей строкой вывода, приправленной с помощью заменяющих строк, например %b
или %s
для общей замены строки.
Каждый шаблон будет заменен аргументом по порядку:
echo sprintf("<h1>%s</h1><p>%s<br/>%s</p>", "Neat Headline", "First Line in the paragraph", "My last words before this demo is over");
json_encode сделает это из коробки, но это не очень (отстут и т. д.):
echo json_encode(array('whatever' => TRUE, 'somethingelse' => FALSE));
… дает …
{"whatever":true,"somethingelse":false}
function dump_condition($condition){ if($condition){ return "true"; } else { return "false"; } }
использовать скрипт
echo dump_condition(1>0); // print "true" echo dump_condition(1<0); // print "false"