2012-04-02 33 views
23

我试图比较两个数组,并只获取两个数组上存在的值,但不幸的是,我找不到正确的数组函数使用.. 。PHP比较两个数组,并得到匹配的值没有区别

我发现array_diff()功能:http://php.net/manual/en/function.array-diff.php

但它是两个阵列的区别。

例子:

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

预期输出:

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

回答

77

简单,使用array_intersect()代替:

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

woahhh!先生非常感谢您!!!我现在可以继续我的工作... – 2012-04-02 01:01:26

+1

100+ @Alix Axel你让我的一天 – chhameed 2014-10-22 10:03:42

+1

非常感谢你... – KNKM 2016-12-01 09:50:33

2

OK。我们需要一个比较动态NUM产品名称的BER ...

有可能是一个更好的办法......但是这对我的作品......

...因为...字符串只是字符数组....: >}

// 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 
相关问题