在PHP中使用if()来查看数组中的日期是否等于存储在变量中的日期

时间:2018-07-19 00:29:15

标签: php arrays

我的index.php中包含以下代码:

$d1 = date('Y-m-d', strtotime("-4 days"));
$newrecord = [];
  for($i = 1; $i <= sizeof($methods); $i++) {
      $keys = ["Email", "FirstName", "LastName"];
      $newrecord[$i][0] = $methods[$i][1];
      $newrecord[$i][1] = $methods[$i][2];
      $newrecord[$i][2] = $methods[$i][3];
      $newrecord[$i][3] = explode(" ", $methods[$i][6]);
      $newrecord[$i][3] = $newrecord[$i][3][0];

      $newrecord[$i][4] = $d1;
      if ($newrecord[$i][3] == $newrecord[$i][4]){
        $newrecord[$i][5] = "New Entry";
      }
}

我希望遍历整个$methods数组,并为我的每个$newrecord[$i]条目分配新值后,我需要检查$newrecord[$i][3]的值是否等于日期4天前。

问题在于,if()检查似乎并不成功,因为我的所有数组都不包含[5] => "New Entry"数组组件。

但是,我知道数组中的120个实例彼此相等时。例如:

  

[23] =>数组([3] => 2018-07-15 [4] => 2018-07-15 [电子邮件] =>   me@example.com [FirstName] => John [LastName] => Doe)

当我打印所有数组的输出时,返回记录[23],总共有120个这样的数组(大约有8000个)。

当我只是将if($newrecord[$i][3] == $d1)放在if语句中时,也会发生同样的事情。

关于我所缺少的任何建议吗?感谢您的帮助。

注意:["Email"] ["FirstName"] ["LastName"]的值出现在函数的后面,这只是其摘要,以使其更加简洁。

1 个答案:

答案 0 :(得分:0)

using Windows.ApplicationModel; 语句不起作用的原因是,数组中日期的真实值与if()变量返回的值不同。

这是我在Chrome浏览器中单击“查看页面源”并检查$d1调用返回的数组时发现的。具体来说,字符之间有空格(即var_dump变成了2018-07-15)。

进一步调查发现,带有“?”字样的黑色小钻石将它们放在CSV文件中,因此我假设导入这些字符时,字符代码是错误的。

经过反复试验,解决方案是使用以下格式的2 0 1 8 - 0 5 - 0 6

preg_replace()

我从this question那里是$newrecord[$i][3] = preg_replace('/[\x00-\x1F\x7F-\xFF]/', '', $newrecord[$i][3]); 搜寻不需要的字符的地方

运行时,/[\x00-\x1F\x7F-\xFF]/语句执行得很好。