2012-04-02 4 views
23

Sto provando a confrontare due array e ottenere solo i valori esistenti su entrambi gli array ma, sfortunatamente, non riesco a trovare la funzione dell'array giusta da usare .. .PHP confronta due array e ottiene i valori corrispondenti non la differenza

ho trovato la funzione array_diff(): http://php.net/manual/en/function.array-diff.php

ma è per la differenza degli array entrambi.

Esempio:

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

Output previsto:

$result = array("**alpha**","**bravo**","**charlie**","**delta**","**foxfrot**"); 

risposta

77

semplice, utilizzare array_intersect() invece:

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

woahhh !!! grazie mille signore!!! ora posso continuare il mio lavoro ... –

+1

100+ @Alix Axel mi fai la mia giornata – chhameed

+1

Grazie mille ... – KNKM

2

OK .. Abbiamo bisogno di confrontare un num dinamica ber dei nomi dei prodotti ...

C'è probabilmente un modo migliore ... ma questo funziona per me ...

... perché .... Le stringhe sono solo array di caratteri ....: >}

// 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