0

我有一个返回的函数

if (file_exists($address)) {

    return simplexml_load_file($address) or die("Error loading XML");
}
else {

    return false;
}

然后在我的页面上我调用我的 XML 函数

$page = fetchXML();

echo $page->title;

但我明白了

Notice: Trying to get property of non-object in [...]

var_dump($page);我得到bool(true)

为什么它不返回我的 XML 数据?


笔记:

如果我

return $address

在我的功能中,然后使用

$page = simplexml_load_file(fetchXML()) or die("Error loading XML");

echo $page->title;

有用。

4

1 回答 1

1

因为你不应该这样短路它:

$ php -r'function foo(){ return 2 or false; } var_dump(foo());'
bool(true)

return 比所谓的优先级or(实际上,它不是运算符,所以运行整个表达式),但=有更高的优先级。

$page = simplexml_load_file(fetchXML()) or die("Error loading XML");

是相同的:

($page = simplexml_load_file(fetchXML())) || die("Error loading XML");

尽管

return simplexml_load_file($address) or die("Error loading XML");

是相同的:

return (simplexml_load_file($address) or die("Error loading XML"));

另请参阅运算符优先级

于 2011-08-02T19:09:07.023 回答