我有两个数组,即
$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)来找到匹配。
我的问题是如何获得每次匹配时都会增加的变量。
答案 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 )