PHP-当为false时,让bool回显false
以下代码不打印任何内容:PHP-当为false时,让bool回显false,php,boolean,Php,Boolean,以下代码不打印任何内容: $bool_val = (bool)false; echo $bool_val; 但以下代码打印1: $bool_val = (bool)true; echo $bool_val; 当$bool_val为false时,是否有比添加if语句更好的打印0或false的方法?否,因为另一个选项是修改Zend引擎,很难将其称为“更好的方法” 编辑: 如果确实需要,可以使用数组: $boolarray = Array(false => 'false', true =&g
$bool_val = (bool)false;
echo $bool_val;
但以下代码打印1
:
$bool_val = (bool)true;
echo $bool_val;
当
$bool_val
为false
时,是否有比添加if
语句更好的打印0
或false的方法?否,因为另一个选项是修改Zend引擎,很难将其称为“更好的方法”
编辑:
如果确实需要,可以使用数组:
$boolarray = Array(false => 'false', true => 'true');
echo $boolarray[false];
是否尝试将布尔值转换为整数
echo (int)$bool_val;
或者,如果您只希望输出为false:
echo !$bool_val ? 'false' : '';
可以使用三元运算符
echo false ? 'true' : 'false';
我喜欢这张打印出来
var_dump ($var);
这是最简单的方法:
$text = var_export($bool_value,true);
echo $text;
或
如果第二个参数不是true,它将直接输出结果。的%b
选项将布尔值转换为整数:
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
echo (int)$bool_val;
如果您不熟悉它:您可以为该函数提供任意数量的参数,而第一个参数应该是添加替换字符串的输出字符串,如用于一般字符串替换的%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");
echo sprintf(“%s%s
%s”、“整洁的标题”、“段落的第一行”、“演示结束前我的最后一句话”);
当$var
是布尔变量时,将打印出true
或false
。这将给出0
或1
:
$bool_val = (bool)true;
echo $bool_val;
intval($bool\u val);
json\u encode将开箱即用,但不美观(缩进等):
…给予
{"whatever":true,"somethingelse":false}
提供所需的功能
对于null
或false
,这将始终打印一个值,而不是不打印任何内容var_export
打印它传递的参数的PHP表示,输出可以复制/粘贴回PHP
var_导出(true);//真的
变量导出(假);//假的
var_导出(1);//1.
变量导出(0);//0
变量导出(空);//无效的
变量导出('true');/'true'这将按原样打印布尔值,而不是1/0
$bool = false;
echo json_encode($bool); //false
您正在将布尔值强制转换为布尔值,并希望显示一个整数。它适用于true
,但不适用于false。因为您需要一个整数:
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
echo (int)$bool_val;
如果这是为了调试,请尝试使用var_dump而不是echo。(bool)
强制转换是多余的,您不需要将bool强制转换为bool:(bool)true===true
。是否有办法配置PHP以使echo 0==1代码>输出0
或false
?这是一种奇怪的方法,因为数组键不能是布尔类型。PHP将把它转换为数组(0=>'false',1=>'true')。@mehaase:我很久以前就停止尝试对PHP的类型处理应用任何逻辑。我只是顺其自然。它令人困惑,杂乱无章,没有任何明显的好处。我已经编程20多年了,从来没有想过要“false”自动转换为blank。。多次为null,但从不为“false”。我的Java/Spring/Hibernate开发比普通的PHP系统更干净、更强大。我能找到很多困惑的人。。但是我找不到任何关于这个设计“特性”的真正原因的参考。我真的想根据PHP文档中的这一点来论证为什么(string)FALSE==“”是个好主意:“布尔真值被转换为字符串“1”。布尔假值被转换为“”(空字符串)。这允许在布尔值和字符串值之间来回转换。”但我测试了它,并且(bool)“0”的计算结果也为FALSE,所以。。。我不知道。我喜欢PHP,但我不能否认这有点“奇怪”——FALSE==''
并不奇怪。它是完全有效的,并且是其他语言的一部分,包括javascript。奇怪的是FALSE默认为空字符串。它应该默认为0。总是。特别是因为TRUE将始终默认为1。这打破了编程的基本规则。保持代码的一致性。这显然是一个bug。虽然这是最简单的方法,但通过包含布尔值的print\r运行数组,这些值将显示为空,除非您之前通过交换它们的循环运行数组,因此如果您只是尝试调试或记录,要想知道这些值是真是假,还是其他看起来空白的东西,这就成了一件让人头疼的事。@Ben尽管0'
在PHP中计算为false
,在JS中为true
<代码>!!“
在JS和PHP中是错误的。在我看来,用JavaScript导出PHP变量是最好的解决方案!这有点误导var|u export
在这种情况下将回显其结果并返回null,因此var|u export将输出true | false
,而echo
将回显null
('
)。要从var\u export
返回输出,如果要将php变量导出到javascriptjson\u encode
,则需要提供第二个参数true
@RPDeshaies。这是一个更好的选择。回答得很好,特别是如果您确实需要json中的布尔值!这是最好的答案简单有效!我需要这个来做些GraphQLHah。。。简单。完美的
echo (int)$bool_val;