为了账号安全,请及时绑定邮箱和手机立即绑定

为什么这句空数组判断的php能执行?是否不严谨?

为什么这句空数组判断的php能执行?是否不严谨?

PHP
呼唤远方 2019-03-06 21:30:11
<?php $arr = array(); if($arr){ echo '111'; }else{ echo '222'; } ?> 输出222,为什么?网上一般说法是用empty,is_null
查看完整描述

3 回答

?
米脂

TA贡献1836条经验 获得超3个赞

参考官方文档转换为布尔型

<?php
var_dump((bool) array(12)); // bool(true)
var_dump((bool) array());   // bool(false)
?>
查看完整回答
反对 回复 2019-03-18
?
慕桂英4014372

TA贡献1871条经验 获得超13个赞

$arr是一个空数组,输出222,没有毛病啊.

查看完整回答
反对 回复 2019-03-18
?
慕的地10843

TA贡献1785条经验 获得超8个赞

个人猜想:

if 语句的表达方式:

if (expression) {
    ...
}

expression 是一个表达式,他最终将会生成一个结果,而 if 判断始终都是布尔值,所以我认为他可能实际的操作是这样的:

if (expression) {
    ....
}

=> 实际 php 执行的流程:

if ((bool) expression) {
    ....
}
查看完整回答
反对 回复 2019-03-18
  • 3 回答
  • 0 关注
  • 371 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信