我需要我的showSuccess.php在生日为null时显示一个空字符串,而不是01/01/1970。我用下面的代码尝试了一下,但它不起作用:
<?php
if (is_null($client_contact->getBirthday()) == TRUE) {
echo "";
} else {
echo $client_contact->getBirthday();
}
?>
我正在与mysql和symfony工作抱歉我的英语不好,我来自智利
我改变了类中的getBirthday()函数。用这个来解决:
public function getBirthday() {
if ($this->_get('birthday') == NULL) {
return NULL;
} else {
return date("d-m-Y", strtotime($this->_get('birthday')));
}
}
谢谢大家的帮助!: D
如果你是var_dump($client_contact->getBirthday())
,你会得到null还是总是得到一个日期?如果您正在使用ORM (Symfony通常使用Doctrine),那么它可能是您的问题的原因,并将null转换为0时间戳…
它不应该这样做,因为NULL != '1970-01-01',我同意你的观点,但是,如果你首先得到这个,然后看看学说手册为什么这样做。可能是模型配置问题
可以修改$client_contact
对象背后的类代码吗?如果是,在该类中检查生日值是否为空。如果是,则返回空字符串,否则返回日期字符串。否则,您将受到Tim提供的解决方案的限制。
如果为null或0,则转换为Epoch (01/01/1970)
所以你可以使用
if ($client_contact->getBirthday() == "01/01/1970")
{
echo "";
} else {
echo $client_contact->getBirthday();
}
或:
$bday = $client_contact->getBirthday();
echo ($bday != "01/01/1970" && !is_null($bday))
? $bday
: "";
但这不是最安全的方法。您需要使用strtotime
检查它是否等于1970年1月1日。不幸的是,任何生日落在这个日期也会被过滤……似乎没有其他的方法来区分日期和未设置。
<?php
if (($client_contact->getBirthday()) == "01/01/1970") {
echo "";
} else {
echo $client_contact->getBirthday();
}
?>