为何isPositive函数传入负数时未返回预期的false(0)?
问题原因与解决方案
在PHP中,使用echo输出布尔值时会触发隐式类型转换:
true会被转为字符串"1",所以传入正数时能看到输出1false会被转为空字符串,因此传入负数时看不到任何输出
解决方法
你可以通过以下几种方式让false的结果可见:
使用
var_dump()调试(推荐)
它会完整输出变量的类型和值,适合开发调试场景:var_dump(isPositive(-1));输出结果:
bool(false)使用
print_r()
简洁输出变量值:print_r(isPositive(-1));输出结果:
false手动转换为可见字符串
通过三元运算符将布尔值转为明确的字符串:// 输出"true"或"false" echo isPositive(-1) ? 'true' : 'false'; // 或者输出"1"或"0" echo isPositive(-1) ? '1' : '0';使用
json_encode()
将布尔值转为标准JSON格式的字符串:echo json_encode(isPositive(-1));输出结果:
false
修改后的示例代码
<?php function isPositive(int $number) : bool{ return $number > 0; } echo "test\n"; echo isPositive(1); echo "\ntest\n"; var_dump(isPositive(-1)); echo "\ntest\n"; echo isPositive(-1) ? 'true' : 'false'; echo "\ntest\n";
内容的提问来源于stack exchange,提问作者Marik
相关产品推荐
相关产品推荐

