PHP echo不能按预期工作

时间:2013-02-07 14:36:59

标签: php echo

我有以下PHP代码:

$ep1 = $tvdb->getEpisodeById($cur->id, 'en');
var_dump($ep1); 

它返回:

object(TvDb\Episode)#60 (17) {
    ["id"]=> int(4490826)
    ["number"]=> int(12)
    ["season"]=>      int(3)
    ["directors"]=> array(0) { }
    ["guestStars"]=> array(0) { }        
    ["writers"]=> array(0) { }
    ["name"]=> string(11) "Episode 312"
    ["firstAired"]=> object(DateTime)#57 (3) {
        ["date"]=> string(19) "2013-04-07 00:00:00"
        ["timezone_type"]=> int(3)
        ["timezone"]=> string(12) "Europe/Sofia"
    }
    ["imdbId"]=> string(0) ""
    ["language"]=> string(2) "en"
    ["overview"]=> string(0) ""
    ["rating"]=> string(1) "0"
    ["ratingCount"]=> int(0)
    ["lastUpdated"]=> object(DateTime)#3 (3) {
        ["date"]=> string(19) "2013-01-30 22:15:41"
        ["timezone_type"]=> int(1)
        ["timezone"]=> string(6) "+00:00"
    }
    ["seasonId"]=> int(501077)
    ["serieId"]=> int(161511)
    ["thumbnail"]=> string(0) ""
}    

我想回复“日期”并写下以下内容:

$ep1 = $tvdb->getEpisodeById($cur->id, 'en');
echo ($ep1->firstAired->date);

它什么都不返回,但当我这样做时:

$ep1 = $tvdb->getEpisodeById($cur->id, 'en');
var_dump($ep1);
echo ($ep1->firstAired->date);

转储后的日期显示:

object(TvDb\Episode)#60 (17) { ["id"]=> int(4490826) ["number"]=> int(12) ["season"]=> int(3) ["directors"]=> array(0) { } ["guestStars"]=> array(0) { } ["writers"]=> array(0) { } ["name"]=> string(11) "Episode 312" ["firstAired"]=> object(DateTime)#57 (3) { ["date"]=> string(19) "2013-04-07 00:00:00" ["timezone_type"]=> int(3) ["timezone"]=> string(12) "Europe/Sofia" } ["imdbId"]=> string(0) "" ["language"]=> string(2) "en" ["overview"]=> string(0) "" ["rating"]=> string(1) "0" ["ratingCount"]=> int(0) ["lastUpdated"]=> object(DateTime)#3 (3) { ["date"]=> string(19) "2013-01-30 22:15:41" ["timezone_type"]=> int(1) ["timezone"]=> string(6) "+00:00" } ["seasonId"]=> int(501077) ["serieId"]=> int(161511) ["thumbnail"]=> string(0) "" } 2013-04-07 00:00:0

我没有这个问题:

$ep1 = $tvdb->getEpisodeById($cur->id, 'en');
echo ($ep1->name);

我希望我很清楚,我很抱歉如果这是一个愚蠢的问题。 谢谢你的时间。

2 个答案:

答案 0 :(得分:3)

属性$ep1->firstAiredDateTime对象。您不能像尝试那样直接访问它的属性。您必须使用format()

等访问器方法
   echo $ep1->firstAired->format('Y-m-d H:i:s');

答案 1 :(得分:1)

实际上这至少对我来说真的很奇怪。我测试最初只回显日期属性,就像你做的那样,它没有用,然后我决定添加一个print_r来查看属性......然后我可以打印出日期字符串。 / p>

这是我的代码:

$d = new DateTime();
print_r($d);
echo $d->timezone  . PHP_EOL;
echo $d->date  . PHP_EOL;

这样做就可以了,但是我删除它不起作用的print_r行。

我的系统是windows 8,php 5.3在shell中运行,这是我的证明:

Yet another PHP feature.

所以你可以说你可以这样做,你只需先做一个print_r,它可能不适用于所有系统。 :d