Filtering an array with condition in PHP -


i trying filter array output children on holidays within date range (i.e 14-11-2016 till 18-11-2016) in php.

i following data in array , not have control on creation of data.

[{"holiday":"15-11-2016","name":"josh stevens"},{"holiday":"17-11-2016","name":"josh stevens"},{"holiday":"22-11-2016","name":"josh stevens"},{"holiday":"14-11-2016","name":"naomi christ"},{"holiday":"15-11-2016","name":"naomi christ"},{"holiday":"16-11-2016","name":"naomi christ"},{"holiday":"17-11-2016","name":"naomi christ"},{"holiday":"14-11-2016","name":"jasmine auger"},{"holiday":"15-11-2016","name":"jasmine auger"},{"holiday":"16-11-2016","name":"jasmine auger"},{"holiday":"17-11-2016","name":"jasmine auger"}] 

i need output data ones "holiday" >= 14-11-2016 , <= 18-11-2016.

i have tried following logic not return anything

function filterarray($value) {   return ($value > '14-11-2016'); }  $filteredarray = array_filter($fullarray, 'filterarray');  foreach($filteredarray $k => $v) {  echo "$k = $v"; } 

if sure 'holiday' field contains correct data, can use code:

$fullarray = json_decode( '[{"holiday":"15-11-2016","name":"josh stevens"},{"holiday":"17-11-2016","name":"josh stevens"},{"holiday":"22-11-2016","name":"josh stevens"},{"holiday":"14-11-2016","name":"naomi christ"},{"holiday":"15-11-2016","name":"naomi christ"},{"holiday":"16-11-2016","name":"naomi christ"},{"holiday":"17-11-2016","name":"naomi christ"},{"holiday":"14-11-2016","name":"jasmine auger"},{"holiday":"15-11-2016","name":"jasmine auger"},{"holiday":"16-11-2016","name":"jasmine auger"},{"holiday":"17-11-2016","name":"jasmine auger"}]', true );   //i need output data ones "holiday" >= 14-11-2016 , <= 18-11-2016.   function filterarray($value) {         static $from  = 20161114;         static $until = 20161118;          // parse date , convert int.             $v = new \datetime( $value['holiday'] );         $v = (int)$v->format('ymd');          // compare integer         return ($v >= $from && $v <= $until ); }  $filteredarray = array_filter($fullarray, 'filterarray');  foreach($filteredarray $k => $v) {         var_dump($v); // prints sub-array } 

you can compare datetime objects:

//i need output data ones "holiday" >= 14-11-2016 , <= 18-11-2016.  $from  = new \datetime('2016-11-14'); $until = new \datetime('2016-11-18');  function filterarray($value) {         global $from, $until;         $v = new \datetime( $value['holiday'] );         return ($v >= $from && $v <= $until ); } 

Comments

Popular posts from this blog

php - How to display all orders for a single product showing the most recent first? Woocommerce -

asp.net - How to correctly use QUERY_STRING in ISAPI rewrite? -

angularjs - How restrict admin panel using in backend laravel and admin panel on angular? -