猿问

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

<?php
$arr = array();
if($arr){
echo '111';    
}else{
echo '222';
}
?>

输出222,为什么?网上一般说法是用empty,is_null 
呼唤远方
浏览 372回答 3
3回答

米脂

参考官方文档转换为布尔型: <?php var_dump((bool) array(12)); // bool(true) var_dump((bool) array()); // bool(false) ?>

慕桂英4014372

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

慕的地10843

个人猜想: if 语句的表达方式: if (expression) { ... } expression 是一个表达式,他最终将会生成一个结果,而 if 判断始终都是布尔值,所以我认为他可能实际的操作是这样的: if (expression) { .... } => 实际 php 执行的流程: if ((bool) expression) { .... }
随时随地看视频慕课网APP
我要回答