PHP include()返回值不一致还是我的无知?

时间:2012-02-14 03:22:56

标签: php types include

哦,也许这是我的无知,但有关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文档不同?

1 个答案:

答案 0 :(得分:2)

这正是文档所说的:

  

$ bar是值1,因为包含成功。 ...   如果无法包含该文件,则返回FALSE并发出E_WARNING。

当它变得不一致时,实际上是在包含文件中返回的内容, 例如在Found.php中:

<?php
return 'Returned from Found.php';

然后

include 'Found.php'; // -> Returns "Returned from Found.php"

值得一读的是布尔在PHP中如何评价:

http://php.net/manual/en/language.types.boolean.php