Search code examples
phparrayscomparearray-differencearray-intersect

PHP: How to compare keys in one array with values in another, and return matches?


I have the following two arrays:

$array_one = array('colorZero'=>'black', 'colorOne'=>'red', 'colorTwo'=>'green', 'colorThree'=>'blue', 'colorFour'=>'purple', 'colorFive'=>'golden');

$array_two = array('colorOne', 'colorTwo', 'colorThree');

I want an array from $array_one which only contains the key-value pairs whose keys are members of $array_two (either by making a new array or removing the rest of the elements from $array_one)

How can I do that?

I looked into array_diff and array_intersect, but they compare values with values, and not the values of one array with the keys of the other.


Solution

  • Update

    Check out the answer from Michel: https://stackoverflow.com/a/30841097/2879722. It's a better and easier solution.


    Original Answer

    If I am understanding this correctly:

    Returning a new array:

    $array_new = [];
    foreach($array_two as $key)
    {
        if(array_key_exists($key, $array_one))
        {
            $array_new[$key] = $array_one[$key];
        }
    }
    

    Stripping from $array_one:

    foreach($array_one as $key => $val)
    {
        if(array_search($key, $array_two) === false)
        {
            unset($array_one[$key]);
        }
    }