Skip to content
Advertisement

php add new set of element in in multidimentional array in no value is present in one dimentional array [closed]

Below is my result array

$resultVal = Array
 (  
    [0] => Array
         (
             [0] => Array
                (
                        [crate] => 13.51
                        [ucount] => 36
                        [udate] => 2016-06-30
                )
                [1] => Array
                (
                        [crate] => 20.51
                        [ucount] => 36
                        [udate] => 2016-07-30
                )
         )
    )

and below is my month array

$MonthArray =array("June 2016","July 2016","August 2016");

And my expected array is below,

$expectedArray = Array
        (
            [0] => Array
                (
                    [crate] => 13.51
                    [ucount] => 36
                    [udate] => June 2016
                )

            [1] => Array
                (
                    [crate] => 0
                    [ucount] => 0
                    [udate] => July 2016
                )

            [2] => Array
                (
                    [crate] => 0
                    [ucount] => 0
                    [udate] => Aug 2016
                )
        )

I have to display expected array on basis of month array.

No value is present in month of July 2016, so I have to add full set of elemenst.

I am using array_combine() and in_array() to set count 0 if no date for particular month.

But for adding element is only set for one element not for both elements.

Please suggest a best solution.

Advertisement

Answer

you need to loop the month array like below .

<?php

$resultVal = Array ("0" => Array("0" => Array("crate" => 13.51,"ucount" => 36,"udate" => '2016-06-30')));

$MonthArray =array("June 2016","July 2016");

$formated_column = array_map(function($v){ return date('F Y',strtotime($v['udate'])); },$resultVal[0]);

//here using array_map to build a formated udate array column .

$new_array =array();

for($i=0;$i<count($MonthArray);$i++){ //here looping month column

    $exists_array_key = array_search($MonthArray[$i],$formated_column);
      //here searching the month value exists in formated array or not .
    if($exists_array_key !==false){

        $resultVal[0][$exists_array_key]['udate']=date('F Y',strtotime($resultVal[0][$exists_array_key]['udate']));

        $new_array[]=  $resultVal[0][$exists_array_key];

    }else{

        $new_array[]= Array("crate" =>"","ucount" =>"","udate" =>$MonthArray[$i] );
    }

}

print_r($new_array );


?>

OUT PUT :

Array
(
    [0] => Array
        (
            [crate] => 13.51
            [ucount] => 36
            [udate] => June 2016
        )

    [1] => Array
        (
            [crate] =>
            [ucount] =>
            [udate] => June 2016
        )

)
User contributions licensed under: CC BY-SA
7 People found this is helpful
Advertisement