我有一个数组
$array = array(
array('a', '18:27:15', 'label1'),
array('b', '18:27:20', 'label2'),
array('c', '18:27:25', 'label3'),
array('d', '18:27:30', 'label4'),
array('e', '18:27:35', 'label5'),
array('f', '18:27:40', 'label6'),
array('g', '18:27:45', 'label7'),
array('h', '18:27:50', 'label8')
);
im检查以查看数组中是否有时间字符串,例如如果我给出
$end_time="18:27:25";
我得到数组结果,但是如果我给出
$end_time="18:27:26";
我得到一个空数组。但是我需要它返回下一个数组,而不是
array('d','18:27:30','label4')
以下是代码
$arr_output = array();
foreach ($array as $key=>$arr1){
if( in_array($end_time, $arr1) ){
$arr_output[$key]=$arr1;
}
}
print_r(arr_output);//Empty
您可以将它们转换为时间戳并进行比较:
$result = null;
$target = strtotime('18:27:41');
foreach ($array as $item) {
$compare = strtotime($item[1]);
if ($compare >= $target) {
if (null === $result) {
$result = $item;
} else if($target - strtotime($result[1]) < $target - $compare) {
$result = $item;
}
}
}
echo print_r($result, 1);
使用这种方法,:20
将指向18:27:20
,:21
将指向18:27:25
。
Note ,此方法不需要以任何特定顺序为任何特定顺序。