2012-04-02 43 views
23

Tôi đang cố gắng so sánh hai mảng và chỉ nhận được các giá trị tồn tại trên cả hai mảng nhưng, rất tiếc, tôi không thể tìm thấy hàm mảng phù hợp để sử dụng .. .PHP so sánh hai mảng và nhận được các giá trị phù hợp không khác biệt

tôi tìm thấy array_diff() chức năng: http://php.net/manual/en/function.array-diff.php

Nhưng đó là vì sự khác biệt của các mảng cả hai.

Ví dụ:

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

Output dự kiến:

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

Trả lời

77

đơn giản, sử dụng array_intersect() thay vì:

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

woahhh !!! cảm ơn ngài rất nhiều!!! bây giờ tôi có thể tiếp tục công việc của tôi ... –

+1

100+ @Alix Axel bạn làm cho ngày của tôi – chhameed

+1

Cảm ơn bạn rất nhiều ... – KNKM

2

OK .. Chúng tôi cần phải so sánh num động ber của tên sản phẩm ...

Có lẽ một cách tốt hơn ... nhưng công trình này đối với tôi ...

... vì .... Strings chỉ Mảng ký tự ....: >}

// 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 
Các vấn đề liên quan