2017-04-04 1 views
-1

Ci-dessous le tableau à l'intérieur de la boucle: Je veux filtrer ce tableau par [date-début] et [date-fin] Par exemple si je poste startdate = 2015-06-29 et enddate = 2015-08-29 puis les données de tableau entre cette gamme devraient venir.filtre un tableau par son élément

J'ai essayé:

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

jetez un oeil sur array_filter ou essayez foreach –

Répondre

1

@Aashi vous pouvez le faire avec foreach() comme ci-dessous:

<?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

Merci. Cela a fonctionné :) – Aashi

1

Essayez ceci:

$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

Merci. Cela a fonctionné :) – Aashi

+0

@Aashi, Si cela a fonctionné, pouvez-vous accepter cela comme réponse. C'est une bonne pratique d'encourager les autres développeurs aussi. Codage heureux. :) – Bhaskar

0

cette est la bonne solution sur pour vous question!

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");