2017-04-04 180 views
-1

下面是循环内的数组: 我想通过[date-begin]和[date-end] 来过滤这个数组。例如,如果我发布startdate = 2015-06-29和enddate = 2015-08-29 然后这个范围之间的数组数据应该出现。按元素过滤数组

我想:

1. array_slice 
2.foreach(range ($startdate,$enddate) as $data){ 
          echo "Age: {$data}<br />"; 
         } 
Array 
(
    [name] => MCLE 201 
    [date-begin] => 2015-06-29 
    [date-end] => 2015-06-29 

) 
Array 
(
    [name] => MCLE 201 
    [date-begin] => 2015-07-29 
    [date-end] => 2015-07-29 

) 
Array 
(
    [name] => MCLE 201 
    [date-begin] => 2015-08-29 
    [date-end] => 2015-08-29 

) 
Array 
(
    [name] => MCLE 201 
    [date-begin] => 2015-09-29 
    [date-end] => 2015-09-29 

) 
+0

看看array_filter或尝试foreach –

回答

1

@Aashi您可以用foreach()像下面这样做:

<?php 
    $yourArray = array(
       array(
        "name" => "MCLE 201", 
        "date-begin" => "2015-06-29", 
        "date-end" => "2015-06-29" 

       ), 
       array(
        "name" => "MCLE 201", 
        "date-begin" => "2015-07-29", 
        "date-end" => "2015-07-29" 

       ), 
       array(
        "name" => "MCLE 201", 
        "date-begin" => "2015-08-29", 
        "date-end" => "2015-08-29" 

       ), 
       array(
        "name" => "MCLE 201", 
        "date-begin" => "2015-09-29", 
        "date-end" => "2015-09-29" 

       ) 
      ); 
$startdate = "2015-06-29"; 
$enddate = "2015-08-29"; 
$filteredArr = array(); 
foreach($yourArray as $value) { 
     if($startdate <= $value["date-begin"] && $enddate >= $value["date-end"]){ 
     $filteredArr[] = $value; 
     } 
} 
echo "<pre>"; 
print_r($filteredArr); 
+0

谢谢。这工作:) – Aashi

1

试试这个:

$filterArray = array(); 
foreach($arr as $key=>$val){ 
    if(strtotime($val['date-begin']) >= strtotime($postedDateBegin) && strtotime($val['date-end']) <= strtotime($postedDateEnd)){ 
     $filterArray[] = $val; 
    } 
} 

Click here to check output

+0

谢谢。这工作:) – Aashi

+0

@Aashi,如果这个工作,你能接受这个答案。鼓励其他开发者也是一种很好的做法。快乐的编码。 :) – Bhaskar

0

这是适当的解决方案为你提问!

function date_is_between($start_date, $end_date, $date){ 
    $start_date = date('Y-m-d',strtotime($start_date)); 
    $end_date = date('Y-m-d',strtotime($end_date)); 
    $date = date('Y-m-d',strtotime($date)); 
    $match = FALSE; 

    if (($date => $start_date) && ($date <= $end_date)) 
     $match = TRUE; 

    return $match; 
} 

function date_between($element, $start_date, $end_date) 
{ 
    $match = FALSE 

     if(date_is_between($element['date-begin'], $element['date-end'], $element['date-begin']) && date_is_between($element['date-begin'], $element['date-end'], $element['date-end'])) 
      $match = TRUE; 

    return $match; 
} 

$filter_array = array_filter($data, "date_between");