奇怪的行为计算时区差异

时间:2010-02-13 04:12:52

标签: php

我无法解释这一点。我有以下内容:

     $time += $res['timezone']; (The array equates to -5*3600 (EST))
     return gmstrftime('%c',$time);

当我回复$ res ['timezone']时,我得到“-5 * 3600”,这是正确的。当我将数组值放在时间变量的前面时,我得到的时间不正确。如果我注释掉数组值并将其替换为-5 * 3600,我会得到正确的结果。为什么?

1 个答案:

答案 0 :(得分:1)

因为字符串“-5 * 3600”和表达式-5 * 3600不是一回事。您可以尝试将eval放在数组值周围,如下所示:

 $time += eval($res['timezone']); //(The array equates to -5*3600 (EST))
 return gmstrftime('%c',$time);

请注意,这是一个非常糟糕的主意,因为它既缓慢又不安全。如果要在数组中存储-5 * 3600,则计算该值并将结果存储在数组中:

$res['timezone'] = -5*3600;