【问题标题】:Comparing Strings in IF( statement in php issue比较 IF 中的字符串(php 问题中的语句
【发布时间】:2013-06-07 15:24:12
【问题描述】:

我还没有在网上找到解决方案,因为我认为这是我使用日期格式的方式。

问题:我有一个日期格式:2013-06-07 这个格式是由以下创建的:

$thedate = (string) substr($item->children('http://www.w3.org/2005/Atom')->updated,0,-15) . ' - '; - 取自 RSS 提要,并经过修剪,因此仅表示年、月和日。

然后我用这个,得到相同的,每个都是今天的日期:

$day = (string) date('Y-m-d');

因此,当我执行 IF 语句时,日期应该匹配,然后才进入数据库:

if($day == $thedate) {

echo ($day . '\n' . $thedate);

$sql = "INSERT INTO rssFeed (date, stage, title, description, location, billtype, link) VALUES('". 
$thedate ."','". $stage . "','" . $title . "', '" . $desc ."', '" . $location ."', '" . $billtype ."', '". $linkurl ."')";

//print_r($sql);

$inres = $mysqli->query($sql);
print_r($mysqli->error);

} else {
echo ('They do not match'); 
}'

没有 IF 语句它工作正常,我打印了两个日期并且它们是相同的,但是,无论出于何种原因,该语句出现在控制台中,不一样,只有“它们不匹配”,或者放入数据库。没有错误。

有什么想法吗?

【问题讨论】:

  • 尝试使用 var_dump 而不是 echo,确保您的 substr 版本没有尾随或前导空格。 (也尝试只做 10,而不是 -15?)请注意,您不需要将它们显式转换为字符串。
  • 你使用了双引号,所以你根本不需要连接变量。
  • 是的,对两者都执行 var_dump 并确保它们也是相同的数据类型。它们都应该是字符串并且没有尾随空格。
  • 你为什么要输入date?
  • date(Y-m-d) 的输出长度为 10 个字符。即使您的 substr($x, 0, -15) 的长度为 10 个字符,您还可以将另外 3 个字符附加到 $thedate (' - ')。因此,您比较 10 和 13 个字符的字符串,这将失败。

标签: php if-statement compare


【解决方案1】:

试试这个:

$day = date("Y-m-d"); //get rid of the (string) cast
$thedate = date("Y-m-d", strtotime($thedate));

if($day == $thedate) {
    ... // your stuff
} else {
    echo ('They do not match.');
}

字符串的编码/存储方式可能存在一些细微差别。由于您的 $day 变量是使用 date() 函数创建的,因此您更有可能通过对 $thedate 执行相同操作来正确匹配它们。

【讨论】:

  • 这似乎成功了$thedate = date("Y-m-d", strtotime(substr($item->children('http://www.w3.org/2005/Atom')->updated,10)));谢谢大家的帮助
猜你喜欢
  • 1970-01-01
  • 2016-07-17
  • 1970-01-01
  • 2018-10-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-06-03
相关资源
最近更新 更多