如何比较两个数组并找到匹配元素的数量

时间:2011-03-28 07:49:26

标签: php mysql

我有两个数组,即

$ar1=array("Mobile","shop","software","hardware");
$arr2=arry("shop","Mobile","shop","software","shop")
 我想将arr2的元素与arr1进行比较,即

    foreach($arr2 as $val)
    { 
        if(in_array($val, $arr1))
        {    
            //mycode to insert data into mysql table

            variable++;  // here there should be a variable that must be increamented when ever match found in $arr2 so that it can be saved into another table.
        }
         $query="update table set shop='$variable',Mobile='$variable'.......";
     }

$ variable应该是一个整数值,以便以后使用我可以使用这个变量(商店,在这个例子中它的值应该是3)来找到匹配。


我的问题是如何获得每次匹配时都会增加的变量。

3 个答案:

答案 0 :(得分:1)

抱歉,我不完全理解您的代码的目的。在比较两个数组时,您可以使用array_intersect获取常用值和array_diff来获取唯一值。

答案 1 :(得分:0)

  

我想将arr2的元素与arr1进行比较,即

然后你基本上是在做同样的商店搜索三次。效率低下。为什么不首先排序和消除重复项?

其他问题。您正在将arr2值与arr1中的值进行比较,这意味着“shop”的重复次数不会是3,它将是1。相反的做法可能会给你在arr2 = 3中重复arr1 [1]的次数。

有很多方法可以解决这个问题。如果需要效率,您可能希望排序,这样您就不必超越某一点(比方说s)。您可以学习使用索引。事实上,整个数据结构围绕着这些类型的东西 - 从快速,肮脏到高效。

答案 2 :(得分:0)

不确定我理解两个阵列之间的连接。但您可以使用它来计算第二个数组中有多少项:

$items = array("shop","Mobile","shop","software","shop");
$count = array();

foreach($items as $item)
{
  if(isset($count[$item]))
  {
    $count[$item]++;
  }
  else
  {
    $count[$item] = 1;
  }
}

print_r($count); // Array ( [shop] => 3 [Mobile] => 1 [software] => 1 )