2013-02-24 80 views
0

我有一个函数比较两个数组推动通过我的功能。问题是,我可以根据计数比较两个不同数组的值。我的代码如下:函数真正比较阵列

 function Array_Smoke($Array_1, $Array_2) 
      { 
        $Return_Array = array(); 
        $Array_Count = count($Array_1);    
       foreach ($Array_1 AS $SmokedKeys => $SmokedValues) 
       { 
        if (in_array($SmokedValues, $Array_2)) 
        { 
         $Return_Array[] = $SmokedValues; 
        } 

      } 
       if ($Array_Count == count($Return_Array)) 
       { 
        return "Arrays Match Up"; 
       } 
       else 
       { 
        return "Arrays Do Not Match Up"; 
       } 
     } 



    $Array_1 = array(
     "Primary Key Number 1" => "Primary Value Number 2", 
     "Sub Key Number 1" => "Sub Value Number 1", 
     "Sub key Number 3" => "Sub Value Number 3", 
     "Sub Key Number 2" => "Sub Value Number 2", 
    ); 
    $Array_2 = array(
     "Primary Key Number 1" => "Primary Value Number 2", 
     "Sub Key Number 1" => "Sub Value Number 1", 
     "Sub key Number 2" => "Sub Value Number 2", 
     "Sub Key Number 3" => "Sub Value Number 3", 
    ); 
     echo Array_Smoke($Array_1, $Array_2); 

我将如何修改我的函数来比较基于键和数组的值?

+0

为什么不只是使用==? '如果($ Array_1 == $$ Array_2){//}' – 2013-02-24 19:44:56

+0

因为与等于操作实验,是它只会返回一个sucession如果以相同的顺序都数组作为彼此 – user1968541 2013-02-24 19:46:52

+0

你可以使用和array_diff_assoc'( $ Array_1,$ Array_2)和array_diff_assoc和($ Array_2,$ Array_1)' – 2013-02-24 19:48:12

回答

1
+0

这将返回出现在两个数组中的值,当阵列不匹配句号 – user1968541 2013-02-24 19:38:22

+0

你只是关心效率不致跌倒?因为你的函数可以在内部使用'array_diff_assoc',然后检查一个空数组。 – 2013-02-24 19:45:08

0

OK,你可以使用内置的PHP操作是这样的:

function Array_Smoke ($array1, $array2) { 
    return $array1 == $array2; 
} 

关于向PHP Array operators '==' 运算符返回true ifboth阵列具有相同的键/值对。

+0

因为与等于操作实验,是,如果相同的顺序一个两个数组另一个 – user1968541 2013-02-24 19:54:42

+0

没有,就到上面的链接,如果你使用''===运营商和'检查顺序也只会返回一个sucession == '只是检查相同的键/值对。 – Boynux 2013-02-24 19:56:34

+0

我刚写了一个简单的脚本来测试它,它的工作原理如上所述。 – Boynux 2013-02-25 06:02:03

0

听起来和array_diff_assoc()是你所需要的。如果没有返回,则数组匹配。请记住,密钥和值必须匹配。