Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 在数组中检查是否包含mm/dd/yyy格式的日期_Php_Arrays_Date - Fatal编程技术网

Php 在数组中检查是否包含mm/dd/yyy格式的日期

Php 在数组中检查是否包含mm/dd/yyy格式的日期,php,arrays,date,Php,Arrays,Date,我有一个动态数组$v,它的内容根据提交的表单而变化。某些表单可能有日期字段,而其他表单可能没有。对于所有表单,我都使用相同的数组$v将值存储在key=>value对中,然后将其插入表中。因此,有时数组可能看起来像 $v = array('patron_name'=>'some value', 'place' => 'again some value', 'pin' => 'blah blah') $v = array('joomla

我有一个动态数组$v,它的内容根据提交的表单而变化。某些表单可能有日期字段,而其他表单可能没有。对于所有表单,我都使用相同的数组$v将值存储在key=>value对中,然后将其插入表中。因此,有时数组可能看起来像

$v = array('patron_name'=>'some value',
           'place' => 'again some value',
           'pin' => 'blah blah')
$v = array('joomla'=>'some value again',
           'date_applied' => '23/04/2012',
          )
在其他时候,它可能看起来像

$v = array('patron_name'=>'some value',
           'place' => 'again some value',
           'pin' => 'blah blah')
$v = array('joomla'=>'some value again',
           'date_applied' => '23/04/2012',
          )
如上所述,内容因形式而异。我要查找的是,首先检查$v是否包含dd/mm/yyy格式的值,如果包含,则将其更改为yyyy-mm-dd格式以插入表中。我可以处理转换部分,但我一直在确定$v是否包含日期

所以基本上我打算这样做:

if(in_array('date in dd/mm/yyyy format', $v))
{
  // change it to yyyy-mm-dd
}
// and then insert into table
$flag = insert($tablename, $v);
非常感谢您的帮助。提前感谢

请使用,而不是在数组中。将数组传递给它并匹配日期格式模式。如果模式匹配,则将其替换为回调

例如:

另一方面,由于Y-m-d包含与d/m/Y相同的值,您不需要严格使用回调,只需使用preg_replace即可:

不过,使用回调将允许您使用任意日期格式。

而不是在数组中使用。将数组传递给它并匹配日期格式模式。如果模式匹配,则将其替换为回调

例如:

另一方面,由于Y-m-d包含与d/m/Y相同的值,您不需要严格使用回调,只需使用preg_replace即可:

使用回调将允许您使用任意日期格式。

如何使用来确定数组中是否包含该格式的字符串?以及获取密钥。

使用来确定数组中是否包含该格式的字符串如何?还有钥匙。

您可以使用array\u walk和preg\u match:

或:

您可以使用array_walk和preg_match:

或:


在_数组不采用关联数组的情况下,关于如何实现这一点,有很多例子:但一定要寻找更好的数组

至于检查是否有一个日期,你可以做很多事情

如果您知道日期将始终采用dd/mm/yyyy格式,您可以为此使用正则表达式。如果google应该提供足够的结果,请使用preg_match检查该值是否包含给定格式的字符串,如果是,请格式化它

如果格式可以更改,例如,如果是人工输入,人们倾向于使用/或-根据语言的具体情况,只需测试strotime是否可用;返回false或not就足够了

示例正则表达式“未测试”

  if (preg_match('/([0-9]{2})\/([0-9]{2})\/([0-9]{4})/', $date) {
    // date found
  }

在_数组不采用关联数组的情况下,关于如何实现这一点,有很多例子:但一定要寻找更好的数组

至于检查是否有一个日期,你可以做很多事情

如果您知道日期将始终采用dd/mm/yyyy格式,您可以为此使用正则表达式。如果google应该提供足够的结果,请使用preg_match检查该值是否包含给定格式的字符串,如果是,请格式化它

如果格式可以更改,例如,如果是人工输入,人们倾向于使用/或-根据语言的具体情况,只需测试strotime是否可用;返回false或not就足够了

示例正则表达式“未测试”

  if (preg_match('/([0-9]{2})\/([0-9]{2})\/([0-9]{4})/', $date) {
    // date found
  }

你可以很容易地检查它

if($v['date_applied']!="")
{
$date=date_create($v['date_applied']);
$fdate=date_format($date,'Y-m-d');
}

然后插入您的代码

,您可以像

if($v['date_applied']!="")
{
$date=date_create($v['date_applied']);
$fdate=date_format($date,'Y-m-d');
}

然后插入代码

这听起来不错。然而,赛前比赛对我来说有点痛苦。我会在谷歌上搜索,看看我是否能找到匹配“dd/mm/yyyy”的preg_匹配,如果一切正常,我会接受你的回答Perfect+1并接受。顺便说一句,你知道为什么当我在DW CS5中使用上述代码时,会在这些行附近突出显示语法错误吗?Nvm,我只使用preg_replace assuggested@aspirin对不起,我对DW一无所知。我可以想象它没有闭包支持,因此无法识别回调。这听起来不错。然而,赛前比赛对我来说有点痛苦。我会在谷歌上搜索,看看我是否能找到匹配“dd/mm/yyyy”的preg_匹配,如果一切正常,我会接受你的回答Perfect+1并接受。顺便说一句,你知道为什么当我在DW CS5中使用上述代码时,会在这些行附近突出显示语法错误吗?Nvm,我只使用preg_replace assuggested@aspirin对不起,我对DW一无所知。我可以想象它没有闭包支持,因此无法识别回调。这与我想要的足够接近,但我不能使用$date变量将日期存储在$date中,我必须使用类似$date=$v['applied_date']的东西,但$v的数组键并不总是相同的,即。,日期值可以是任意值一个非常粗糙的示例:foreach$array as$k=>v{if preg_match$regexp,$v{//date find}},但下面是多个更好的示例,说明了如何执行此循环感谢Tjirp的努力。但我得到了我想要的+1 BTW这已经足够接近我想要的了,但是我
无法使用$date变量将日期存储在$date中,我将不得不使用类似$date=$v['applied_date']的东西,但是$v的数组键并不总是相同的,也就是说,对于日期值,它可以是任意值一个非常粗糙的示例:foreach$数组为$k=>$v{如果preg_匹配$regexp,$v{//date found},但下面是多个,更好,如何实现此循环的示例感谢Tjirp的努力。但我得到了我想要的+1 btwI在使用$v=array_mapfunction$v{return preg_replace'^\d{2}/\d{2}/\d{4}$','\3-\2-\1',$v;},$v@asprin,语法在5.3中介绍;请再次检查。谢谢杰克的努力。但我得到了我想要的+1.btw@asprin是的,应用在阵列上的preg_replace在某种程度上更好;但它对记忆的友好程度较低-我在使用$v=array\u映射函数$v{return preg\u replace'^\d{2}/\d{2}/\d{4}$','\3-\2-\1',$v;},$v@asprin,语法在5.3中介绍;请再次检查。谢谢杰克的努力。但我得到了我想要的+1.btw@asprin是的,应用在阵列上的preg_replace在某种程度上更好;但它对记忆的友好程度较低-我不能硬编码$v['date\u applied'],因为它也可以是$v[key\u value\u can\u anything]。我不能硬编码$v['date\u applied'],因为它也可以是$v[key\u value\u can\u anything]。