Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/267.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/visual-studio-code/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 非常",;“有趣”;DateTime对象的行为和对其元素的访问-奇怪 我不认为这是一个重复,每个说,因为另一个问题谈到VARYDUP不打印。我认为其他人可能会使用print\r遇到这个问题,因此他们会找到我的问题和答案,并且可能会错过其他问题。我没有找到另一个,就是。_Php_Date - Fatal编程技术网

Php 非常",;“有趣”;DateTime对象的行为和对其元素的访问-奇怪 我不认为这是一个重复,每个说,因为另一个问题谈到VARYDUP不打印。我认为其他人可能会使用print\r遇到这个问题,因此他们会找到我的问题和答案,并且可能会错过其他问题。我没有找到另一个,就是。

Php 非常",;“有趣”;DateTime对象的行为和对其元素的访问-奇怪 我不认为这是一个重复,每个说,因为另一个问题谈到VARYDUP不打印。我认为其他人可能会使用print\r遇到这个问题,因此他们会找到我的问题和答案,并且可能会错过其他问题。我没有找到另一个,就是。,php,date,Php,Date,我正在编写一些代码,通过从当前日期减去天数来计算日期。我通过getdate()函数获得了当前日期。然后我用date\u sub()减去天数 在测试过程中,我遇到了一些问题,因此我加入了一些echo和print\r()语句 我终于让它正常工作了,我拿出了echo和print\r()语句 当我运行代码时,在第8行出现了一个错误:E_注意:type 8——未定义的属性:DateTime::$date 所讨论的语句是对DateTime对象的date元素的引用。我想,当我注释掉echo和print\r()

我正在编写一些代码,通过从当前日期减去天数来计算日期。我通过
getdate()
函数获得了当前日期。然后我用
date\u sub()
减去天数

在测试过程中,我遇到了一些问题,因此我加入了一些
echo
print\r()
语句

我终于让它正常工作了,我拿出了
echo
print\r()
语句

当我运行代码时,在第8行出现了一个错误:E_注意:type 8——未定义的属性:DateTime::$date

所讨论的语句是对DateTime对象的date元素的引用。我想,当我注释掉
echo
print\r()
语句时,可能是我搞错了,所以我取消了更改并尝试了它——它没有出错

然后,我非常小心地删除了
echo
print\r()
stagements并再次尝试-砰!同样的错误

我坐在那里盯着屏幕看了一会儿,开始想是哪个
echo
print\r()
语句阻止了这个错误。最后,我将其缩小为一个显示DateTime对象的print\u r()。如果我将其保留在中,则不会发生错误,并且输出是正确的。如果我把它注释掉了,错误就发生了

我做了更多的观察,然后找出引用DateTime对象数据元素的另一种方法。我发现我可以用object->format()得到同样的结果

但是这种奇怪的行为一直困扰着我,我来这里是为了展示它,看看是否有人对它的发生有任何理论

下面是演示该问题所需的最低编码

<?php
    $today = date_create();
    print_r($today);
    echo '<br>';
    print_r($today->date);
?>
如果您将该声明注释掉,您将得到:

E_NOTICE : type 8 -- Undefined property: DateTime::$date -- at line 5
您可能很难相信这一点-请访问fiddle.org并使用代码

注释掉第一个print_r()就得到了错误。取消注释,则不会出现错误

如果将
print_r()
语句替换为不引用DateTime对象的语句,例如
print_r('Hey there')--您将得到错误。不是print\u r()函数本身,而是用DateTime调用
print\u r()
以某种方式防止了错误

因此-您对该
print\u r()
语句所做的使DateTime对象的数据元素的引用“不正确”的事情有何看法。

这是众所周知的:

->在这里,日期可用实际上是支持var_dump()的副作用。我将此标记为功能请求,因为它不打算工作

derrick@php.net

您应该使用
->format()打印日期时间


可能是重复的啊-我不明白你的意思。我不知道要显示什么DateTime对象,我在print_r()语句中输入了什么来查看发生了什么,而不是作为实际功能的一部分。此外,如果不查找单个元素,而只指定对象本身,则print\u r()也会起作用。@SimonT
->date
是私有的,但使用
print\u r
/
var\u dump
后的错误会将其公开
E_NOTICE : type 8 -- Undefined property: DateTime::$date -- at line 5
echo $today->format("Y-m-d H:m:s");