PHP时间字符串数组-删除特定时间段的值


php time string array - delete values for specific period

[0] => 12:00:00
[1] => 12:15:00
[2] => 12:30:00
[3] => 12:45:00
[5] => 13:15:00
[6] => 13:30:00
[7] => 13:45:00
[8] => 14:00:00
[9] => 14:15:00
[10] => 14:30:00

如何删除值从上面的数组当我的开始时间是"12:30:00"和结束时间是"14:00:00" ?需要删除的值为12:30:00, 12:45:00, 13:15:00, 13:45:00和14:00:00

对于PHP>= 5.2.0,我会这样做:

$time_array = array('0' => '11:00:00',
                    '1' => '12:00:00',
                    '2' => '13:00:00',
                    '3' => '14:00:00',
                    '4' => '15:00:00',
                    '5' => '16:00:00');
echo "'nBefore:'n";
print_r($time_array);
$start = new DateTime('12:30:00');
$end   = new DateTime('14:00:00');
// Magic starts here
foreach ($time_array as $key => $value) {
  $datetime = new DateTime($value);
  if ($datetime >= $start and $datetime <= $end)
    unset($time_array[$key]);
}
// Magic finished
echo "'nAfter:'n";
print_r($time_array);

如果不需要保留索引,可以使用

  error_reporting(E_ALL);
  $array = array(
    0 => '12:00:00',
    1 => '12:15:00',
    2 => '12:30:00',
    3 => '12:45:00',
    5 => '13:15:00',
    6 => '13:30:00',
    7 => '13:45:00',
    8 => '14:00:00',
    9 => '14:15:00',
    10 => '14:30:00',
  );
  $from = '12:30:00';
  $to   = '14:00:00';
  $filtered = array();
    foreach($array as $key => $value) {
  if ($value < $from || $value > $to) {
          $filtered[] = $value;
 }
  }
  var_dump($filtered);
    $var_arr = array();
    $time_arr = array('12:00:00','12:15:00','12:30:00','12:45:00','13:15:00',
'13:30:00','13:45:00','14:00:00','14:15:00','14:30:00'); 
    $start = strtotime('12:30:00');
    $end = strtotime('14:00:00');
    foreach($time_arr as $arr):
    if(strtotime($arr)<$start || strtotime($arr)>$end):
    $var_arr[] = $arr;
    endif;
    endforeach;
    print_r($var_arr);