Php 从嵌套数组中查找最近的日期
我有一个Php 从嵌套数组中查找最近的日期,php,arrays,Php,Arrays,我有一个多级数组(请参见下面的数组结构图片),我需要获得具有较高日期值的子嵌套数组 我想知道是否有一种直接的方法可以按日期值对子嵌套数组进行排序,或者获得最高的日期值 阵列映射 要做到这一点,函数将非常有用: usort($rgData, function($rgX, $rgY) { $x = strtotime($rgX['date']); $y = strtotime($rgY['date']); return $x<$y?-1:$x!=$y; }); //var_d
多级数组
(请参见下面的数组结构图片),我需要获得具有较高日期值的子嵌套数组
我想知道是否有一种直接的方法可以按日期值对子嵌套数组进行排序,或者获得最高的日期值
阵列映射
要做到这一点,函数将非常有用:
usort($rgData, function($rgX, $rgY)
{
$x = strtotime($rgX['date']);
$y = strtotime($rgY['date']);
return $x<$y?-1:$x!=$y;
});
//var_dump($rgData);
usort($rgData,function($rgX,$rgY)
{
$x=strottime($rgX['date']);
$y=strottime($rgY['date']);
return$x如何使用:
$input=array(
数组('date'=>'2013-09-11 13:08:40+0000'),
数组('date'=>'2013-09-1113:09:17+0000');
usort($输入,函数(数组$a,数组$b){
$aTimestamp=STROTTIME($a['date']);
$bTimestamp=strottime($b['date']);
如果($aTimestamp==$bTimestamp)返回0;
返回$aTimestamp<$B时间戳;
});
print_r($input);//$input[0]具有最新的日期值
我可能会先看看。是否真的需要将它们从字符串转换为整数?字符串cmp函数也足以对它们进行排序,不是吗?@crush,因为如果将日期作为字符串进行比较,那么如果将$x<$y
作为日期,而将$x>$y
作为字符串,则会得到错误的结果。这不是真的当日期在提供的格式中使用前导0时。由于我不确定格式,我使用了strotime
(可能甚至会有“一月”…“十二月”这样的月份)strcmp
更快的原因在于strotime
中发生的字符串解析将字符串日期转换为整数。如果不存在此步骤,那么比较整数而不是字符串显然会快得多。不幸的是,您必须对每个对象执行2次strotime
转换。
$input = array(
array('date' => '2013-09-11 13:08:40 +0000'),
array('date' => '2013-09-11 13:09:17 +0000'));
usort($input, function(array $a, array $b) {
$aTimestamp = strtotime($a['date']);
$bTimestamp = strtotime($b['date']);
if($aTimestamp == $bTimestamp) return 0;
return $aTimestamp < $bTimestamp;
});
print_r($input); //$input[0] has the latest date value