phparrayscodeignitercountingmerging-data

Create new array from two array in with i will count the number of occurence some values in php


I have two arrays

The first array:

 Array ( [0] => stdClass Object ( [idConsultant] => 291 ) [1] => stdClass Object ( [idConsultant] => 292 ) [2] => stdClass Object ( [idConsultant] => 293 ) ) 

The second array:

Array ( [0] => stdClass Object ( [idConsultant] => 291 ) [1] => stdClass Object ( [idConsultant] => 291 ) [2] => stdClass Object ( [idConsultant] => 292 ) ) 

I need a function how will return me, foreach value in the first array the number of occurrence in the second.

The result i am looking for is:

Array ( [0] => stdClass Object ( [291] => 2 ) [1] => stdClass Object ( [292] => 1 ) [2] => stdClass Object ( [293] => 0 ) )

Thank you.


Solution

  • there is a function called array_count_values - which is pretty handy in your situation

    something like the following should work (assuming your arrays are named arrA and arrB

    $arrCntValues = array_count_values(
        array_merge
        (
            array_column($arrA, 'idConsultant'), 
            array_column($arrB, 'idConsultant')
        )
    );
    
    print_r($arrCntValues);
    

    and if you really need it like your desired structure just iterate over it

    $arrObjects = [];
    foreach($arrCntValues AS $key => $val)
    {
        $obj = new stdClass();
        $obj->$key = $val;
        $arrObjects[] = $obj;
    }
    
    print_r($arrObjects);