Я пытаюсь сравнить два массива и получить только значения, которые существуют на обоих массивах, но, к сожалению, я не могу найти нужную функцию массива для использования …
Я нашел 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**");
Простой, используйте array_intersect()
вместо:
$result = array_intersect($array1, $array2);
ОК .. Нам нужно было сравнить динамическое число названий продуктов …
Вероятно, есть лучший способ … но это работает для меня …
… потому что …. Строки – это просто массивы символов ….:>}
// 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