Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jsp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP-当为false时,让bool回显false_Php_Boolean - Fatal编程技术网

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变量导出到javascript
json\u encode
,则需要提供第二个参数
true
@RPDeshaies。这是一个更好的选择。回答得很好,特别是如果您确实需要json中的布尔值!这是最好的答案简单有效!我需要这个来做些GraphQLHah。。。简单。完美的
echo (int)$bool_val;