【问题标题】:how to compare two arrays and find the count of match elements如何比较两个数组并找到匹配元素的计数
【发布时间】:2011-03-28 16:28:05
【问题描述】:

我有两个数组,即

$ar1=array("Mobile","shop","software","hardware");
$arr2=arry("shop","Mobile","shop","software","shop")
我想将 arr2 的元素与 arr1 进行比较,即 foreach($arr2 作为 $val) { if(in_array($val, $arr1)) { //mycode向mysql表中插入数据 变量++; // 这里应该有一个变量,当在 $arr2 中找到匹配时必须增加一个变量,以便可以将它保存到另一个表中。 } $query="更新表集shop='$variable',Mobile='$variable'......."; }

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


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

【问题讨论】:

  • 你到底想在这里做什么?您问“如何比较两个数组并找到匹配元素的数量”,但是那里有很多 SQL 等等。你到底有什么问题?
  • 我的问题是,只要在if(in_array($val, $arr1) 中找到匹配项,我的代码就会被执行。在这里,我想要一个变量或一个数组来计算找到该项目/元素的次数,即对于 shop=3,对于移动设备和软件,它应该是 1。稍后在我的更新查询中,我想用这个计数设​​置字段。

标签: php mysql


【解决方案1】:

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

【讨论】:

    【解决方案2】:

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

    然后,您实际上是对商店进行了 3 次相同的搜索。这是低效的。为什么不先排序并消除重复项?

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

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

    【讨论】:

      【解决方案3】:

      不确定我是否了解您的两个阵列之间的联系。但是您可以使用它来计算第二个数组中有多少项目:

      $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 )
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2021-05-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-01-27
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多