【问题标题】:Variable Blank until Dumped可变空白直到转储
【发布时间】:2013-04-30 21:22:28
【问题描述】:

变量 $now 不会显示,除非它被转储。它的人口。它根本不显示“现在为空”字符串。它不会显示 $now 中的内容,除非它是 var_dump 或 var_exported。

$ipData = json_decode( $ttt, true);
$now="";
if ($ipData['timezone']) {
    $tz = new DateTimeZone( $ipData['timezone']);
    $now = new DateTime( 'now', $tz); // DateTime object corellated to user's timezone
} else {
   // we can't determine a timezone - do something else...
}



if($now==""){echo "now is empty";}

echo "<br />
<br />
".$now->timezone.$now->date;
var_dump($now);

}

if(isset($now)){echo "It is set.";} 它肯定是设置的,虽然我在实际调用它之前将它设置为 "",所以不管它被初始化了什么。

即使删除 $now="";表明它已初始化。 var_dump($now);呼应这个:

object(DateTime)#30 (3) { ["date"]=> string(19) "2013-05-06 22:52:29" ["timezone_type"]=> int(3) ["timezone "]=> string(16) "America/New_York" } var_dump 之后 $now->timezone 等于 America/New_York

【问题讨论】:

  • var_dump($now);回显: object(DateTime)#30 (3) { ["date"]=> string(19) "2013-05-06 22:52:29" ["timezone_type"]=> int(3) ["timezone "]=> string(16) "America/New_York" } var_dump 之后 $now->timezone 等于 America/New_York

标签: php variables var-dump


【解决方案1】:

DateTime 返回新的 DateTime 对象,而不是 echo 的字符串。 如果您想回显 $now 的日期部分,您应该使用 format,如下所示

echo $now->format('Y-m-d H:i:s'); 

如果您喜欢回显$now 的时区,您应该使用gettimezonegetname,如下所示

echo $now->getTimezone()->getName(); 

那么它们都应该像下面这样

 echo $now->format('Y-m-d H:i:s').$now->getTimezone()->getName();

【讨论】:

    【解决方案2】:

    确保您确实输入了该 IF 条件。 您可以尝试 isset($var) 以查看 var 是否已初始化,或者尝试 empty($var) 以查看其内部是否有内容。 [而不是 =="")

    【讨论】:

    • if(isset($now)){echo "It is set.";} 肯定已经设置好了,虽然我在实际调用它之前将它设置为 "",所以不管它被初始化了什么.甚至删除 $now="";表明它已初始化。 var_dump($now);回显: object(DateTime)#30 (3) { ["date"]=> string(19) "2013-05-06 22:52:29" ["timezone_type"]=> int(3) ["timezone "]=> string(16) "America/New_York" } var_dump 之后 $now->timezone 等于 America/New_York
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-25
    • 1970-01-01
    • 2018-04-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多