如果声明不与AND一起使用

时间:2013-01-09 03:05:49

标签: php if-statement operators

我正在尝试确保我的Twitter Feed以某种方式提供,缓存或新的。我正在使用下面的代码来确保缓存文件是否已经过时,另外如果同时我仍然有足够的尝试留在我的Twitter速率限制中。问题是该声明似乎不正常,但我无法弄清楚原因。我试过两个运营商'&&''和'和',都没有工作。有什么想法吗?

$json = file_get_contents("http://api.twitter.com/1/account/rate_limit_status.json", true);
$decode = json_decode($json, true);
$twitter_rate_remaining = $decode['remaining_hits'];

if(((time()-filectime($file)) > 1800) && ($twitter_rate_remaining > 5)) { //do something }

2 个答案:

答案 0 :(得分:0)

注意:我们不知道你问题的$ file是什么 - 它来自哪里?您使用的操作系统和文件系统是什么?

但是,我怀疑您希望使用filemtime来检查缓存文件的更新。

与&&&或AND,但你的两个条件的布尔值是什么 - 这是布尔逻辑的意思。如果其中任何一个值为false,则整个测试将为false。

做一些调试:

var_dump(time());
var_dump(filectime($file));
var_dump(time() - filectime($file));

var_dump(time()-filectime($file)) > 1800); // output boolean true or false

var_dump($twitter_rate_remaining);

var_dump($twitter_rate_remaining > 5); // output boolean true or false;

var_dump((time()-filectime($file)) > 1800) && ($twitter_rate_remaining > 5)); // output boolean true or false

这样,您可以看到哪些条件是错误的。

答案 1 :(得分:0)

好的,我明白了。我没有把它包含在我的功能中。我把它放在外面。卫生署!

$ json = file_get_contents(“http://api.twitter.com/1/account/rate_limit_status.json”,true); $ decode = json_decode($ json,true); $ twitter_rate_remaining = $ decode ['remaining_hits'];

所以在我将其移入之前,我无法获得$ twitter_rate_remaining值。