在函数中返回XML值

时间:2011-08-02 18:58:33

标签: php xml simplexml file-exists

我有一个返回

的函数
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;

它有效。

1 个答案:

答案 0 :(得分: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"));

另见operator precedence