PHP comparar dos matrices y obtener los valores coincidentes no la diferencia


Estoy tratando de comparar dos matrices y obtener solo los valores que existen en ambas matrices, pero, desafortunadamente, no puedo encontrar la función de matriz correcta para usar...

Encontré la función array_diff(): http://php.net/manual/en/function.array-diff.php

Pero es por la diferencia de los dos arrays.

Ejemplo:

$array1 = array("**alpha**","omega","**bravo**","**charlie**","**delta**","**foxfrot**");
$array2 = array("**alpha**","gamma","**bravo**","x-ray","**charlie**","**delta**","halo","eagle","**foxfrot**");

Producto previsto:

$result = array("**alpha**","**bravo**","**charlie**","**delta**","**foxfrot**");
Author: S.L. Barth, 2012-04-02

2 answers

Simple, use array_intersect() en su lugar:

$result = array_intersect($array1, $array2);
 80
Author: Alix Axel,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-04-02 00:58:32

OK.. Necesitábamos comparar un número dinámico de nombres de productos...

Probablemente hay una mejor manera... pero esto funciona para mí...

... porque....Las cadenas son solo matrices de caracteres.... :>}

//  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
 2
Author: Bill Warren,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-10-31 10:42:25