PHP and 2 multidimensional array compare based on two key values

arrays, multidimensional-array, php

Solution

Here you go, just tested it and it works as expected.

// Presuming your two arrays are still called $new & $original
$original = array(); // your data
$new = array(); // your data

$newArray = array();
foreach($original AS $key => $val){
    $newArray[$val['memberid'] . '-' . $val['type']] = $val;
}

$original = array();
foreach($new AS $key => $val){
    if(isset($newArray[$val['memberid'] . '-' . $val['type']])){
        $original[] = $newArray[$val['memberid'] . '-' . $val['type']];
    }
}

print_r($original);

Problem

I have two multidimensional arrays like this: ``` $original = Array ( [0] => Array ( [time] => 1364690340 [memberid] => 90 [type] => single ) [1] => Array ( [time] => 1364690341 [memberid] => 92 [type] => fixed ) [2] => Array ( [time] => 1364690342 [memberid] => 96 [type] => single ) ) ``` and second one like this ``` $new = Array ( [0] => Array ( [time] => 1364825750 [memberid] => 90 [type] => single ) [1] => Array ( [time] => 1364825751 [memberid] => 92 [type] => single ) [2] => Array ( [time] => 1364825752 [memberid] => 96 [type] => single ) [3] => Array ( [time] => 1364825753 [memberid] => 111 [type] => single ) ) ``` My problem is: I want to search $original array for matches based on memberid and type keys and if memberid and type ARE NOT the same -> I want to remove that array from $original array. So in this case I want to keep [0] Array and [2] Array as in $new array I have same memberid and same type as in original, but I would want to remove [1] Array as memberid is the same, but type is different. So my final $original array will look like this: ``` $original = Array ( [0] => Array ( [time] => 1364690340 [memberid] => 90 [type] => single ) [1] => Array ( [time] => 1364690342 [memberid] => 96 [type] => single ) ) ```

Original source