加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

php – DateInterval属性和isset()

发布时间:2020-12-13 17:56:35 所属栏目:PHP教程 来源:网络整理
导读:在运行一些测试时,注意到检查DateInterval对象上的公共属性,即使它们包含数据也会返回false.为什么这个/我们在文档中遗漏了什么? 例: $currentDate = new DateTime();$targetDate = new DateTime('2015-03-05 11:11:11');$interval = $currentDate-diff($t
在运行一些测试时,注意到检查DateInterval对象上的公共属性,即使它们包含数据也会返回false.为什么这个/我们在文档中遗漏了什么?

例:

$currentDate = new DateTime();
$targetDate = new DateTime('2015-03-05 11:11:11');
$interval = $currentDate->diff($targetDate);
var_dump($interval->y);
var_dump($interval->m);
var_dump(isset($interval->y));
var_dump(isset($interval->m));
var_dump($interval);

将给出以下输出:

int(0)
int(2)
bool(false)
bool(false)
object(DateInterval)#3 (15) {
  ["y"]=>
  int(0)
  ["m"]=>
  int(2)
  ["d"]=>
  int(1)
  ["h"]=>
  int(9)
  ["i"]=>
  int(43)
  ["s"]=>
  int(35)
  ["weekday"]=>
  int(0)
  ["weekday_behavior"]=>
  int(0)
  ["first_last_day_of"]=>
  int(0)
  ["invert"]=>
  int(1)
  ["days"]=>
  int(62)
  ["special_type"]=>
  int(0)
  ["special_amount"]=>
  int(0)
  ["have_weekday_relative"]=>
  int(0)
  ["have_special_relative"]=>
  int(0)
}
这绝对有趣.看一下这个:
$currentDate = new DateTime();
$targetDate = new DateTime('2015-03-05 11:11:11');
$interval = $currentDate->diff($targetDate);
echo "<pre>";
//var_dump($interval); --> if you uncomment this line,it will work just fine
var_dump($interval->y);
var_dump($interval->m);
var_dump(isset($interval->y));
var_dump(isset($interval->m));

在调用isset()之前执行var_dump($interval)会打印出正确的结果!

object(DateInterval)#3 (15) {
  ["y"]=>
  int(0)
  ["m"]=>
  int(2)
  ["d"]=>
  int(1)
  ["h"]=>
  int(9)
  ["i"]=>
  int(49)
  ["s"]=>
  int(33)
  ["weekday"]=>
  int(0)
  ["weekday_behavior"]=>
  int(0)
  ["first_last_day_of"]=>
  int(0)
  ["invert"]=>
  int(1)
  ["days"]=>
  int(62)
  ["special_type"]=>
  int(0)
  ["special_amount"]=>
  int(0)
  ["have_weekday_relative"]=>
  int(0)
  ["have_special_relative"]=>
  int(0)
}
int(0)
int(2)
bool(true)
bool(true)

我认为你必须真正偶然发现这种语言中的一个怪癖.我无法想到与var_dump或isset或PHP的OOP实现有关,这可能会导致此行为.也许是PHP的错误报告?

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读