鍍金池/ 問答/PHP/ 為什么這句空數(shù)組判斷的php能執(zhí)行?是否不嚴謹?

為什么這句空數(shù)組判斷的php能執(zhí)行?是否不嚴謹?

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

輸出222,為什么?網(wǎng)上一般說法是用empty,is_null 
回答
編輯回答
伴謊

$arr是一個空數(shù)組,輸出222,沒有毛病啊.

2017年11月8日 04:07
編輯回答
互擼娃

個人猜想:

if 語句的表達方式:

if (expression) {
    ...
}

expression 是一個表達式,他最終將會生成一個結(jié)果,而 if 判斷始終都是布爾值,所以我認為他可能實際的操作是這樣的:

if (expression) {
    ....
}

=> 實際 php 執(zhí)行的流程:

if ((bool) expression) {
    ....
}
2017年8月14日 10:08
編輯回答
萢萢糖

參考官方文檔轉(zhuǎn)換為布爾型

<?php
var_dump((bool) array(12)); // bool(true)
var_dump((bool) array());   // bool(false)
?>
2017年4月23日 22:21