PHP compare two arrays and get the matched values not the difference PHP compare two arrays and get the matched values not the difference arrays arrays

PHP compare two arrays and get the matched values not the difference


Simple, use array_intersect() instead:

$result = array_intersect($array1, $array2);


OK.. We needed to compare a dynamic number of product names...

There's probably a better way... but this works for me...

... because....Strings are just Arrays of characters.... :>}

//  Compare Strings ...  Return Matching Text and Differences with Product IDs...//  From MySql...$productID1 = 'abc123';$productName1 = "EcoPlus Premio Jet 600";   $productID2 = 'xyz789';$productName2 = "EcoPlus Premio Jet 800";   $ProductNames = array(    $productID1 => $productName1,    $productID2 => $productName2);function compareNames($ProductNames){       //  Convert NameStrings to Arrays...        foreach($ProductNames as $id => $product_name){        $Package1[$id] = explode(" ",$product_name);        }    // Get Matching Text...    $Matching = call_user_func_array('array_intersect', $Package1 );    $MatchingText = implode(" ",$Matching);    //  Get Different Text...    foreach($Package1 as $id => $product_name_chunks){        $Package2 = array($product_name_chunks,$Matching);        $diff = call_user_func_array('array_diff', $Package2 );        $DifferentText[$id] = trim(implode(" ", $diff));    }    $results[$MatchingText]  = $DifferentText;                  return $results;    }$Results =  compareNames($ProductNames);print_r($Results);// Gives us this...[EcoPlus Premio Jet]         [abc123] => 600        [xyz789] => 800


I think the better answer for this questions is

array_diff() 

because it Compares array against one or more other arrays and returns the values in array that are not present in any of the other arrays.

Whereas

array_intersect() returns an array containing all the values of array that are present in all the arguments. Note that keys are preserved.