哦,也许这是我的无知,但有关include
声明的PHP文档说在比较返回值时要小心:
<?php
// won't work, evaluated as include(('vars.php') == 'OK'), i.e. include('')
if (include('vars.php') == 'OK') {
echo 'OK';
}
// works
if ((include 'vars.php') == 'OK') {
echo 'OK';
}
?>
但这就是我所经历的; boolean false
如果失败,int 1
如果成功:
$exists = 'Found.php';
var_dump((include $exists)); // Type is: int, value is: 1
$notexists = 'NotFound.php';
var_dump((include $notexists)); // Type is: boolean, value is: false
这是我的坏事吗?为什么返回值不一致(例如,并不总是boolean
)并且与PHP文档不同?
答案 0 :(得分:2)
这正是文档所说的:
$ bar是值1,因为包含成功。 ... 如果无法包含该文件,则返回FALSE并发出E_WARNING。
当它变得不一致时,实际上是在包含文件中返回的内容, 例如在Found.php中:
<?php
return 'Returned from Found.php';
然后
include 'Found.php'; // -> Returns "Returned from Found.php"
值得一读的是布尔在PHP中如何评价: