Php 当索引不';不匹配

Php 当索引不';不匹配,php,mysql,Php,Mysql,我有两个mySQL查询,它们从我的数据库中提取数据。在不太详细的情况下,在运行查询之后,在分配给数组时,这两个查询的结果应该是相关的(即,由于sql查询的性质,array1[x]和array2[x]应该通过x偏移量进行相关) 但是,如果其中一个查询返回的值小于或大于另一个查询,则偏移量将关闭,从而导致for循环比较(在下面的代码段末尾)出现错误,那么这就不够健壮 两个数组中的['companyid']都是固定的,不会改变,所以有没有办法使数组的索引变为固定的,并通过它循环进行比较?注意,['co

我有两个mySQL查询,它们从我的数据库中提取数据。在不太详细的情况下,在运行查询之后,在分配给数组时,这两个查询的结果应该是相关的(即,由于sql查询的性质,array1[x]和array2[x]应该通过x偏移量进行相关)

但是,如果其中一个查询返回的值小于或大于另一个查询,则偏移量将关闭,从而导致for循环比较(在下面的代码段末尾)出现错误,那么这就不够健壮

两个数组中的['companyid']都是固定的,不会改变,所以有没有办法使数组的索引变为固定的,并通过它循环进行比较?注意,['companyid']可以是任何非序列号

*SQL Query*

         while ($row = $result->fetch()) {  
            $pastcompanies[] = array(
                    'companyid' => $row['id'],
                    'name' => $row['name'],
                    'contactid' => $row['contactid'],
                    'firstname' => $row['firstname'],
                    'lastname' => $row['lastname'],
                    'email' => $row['email']        
   );
        }   

*SQL Query*

         while ($row = $result->fetch()) {  
            $nowcompanies[] = array(
                    'companyid' => $row['id'],
                    'name' => $row['name'],
                    'contactid' => $row['contactid'],
                    'firstname' => $row['firstname'],
                    'lastname' => $row['lastname'],
                    'email' => $row['email']        
    );
        }   

        for ($x=0;$x<count($pastcompanies);$x++){
                if ($pastcompanies[$x]['contactid']!=$nowcompanies[$x]['contactid']){
                     echo $pastcompanies[$x]['firstname']." has been replaced by "
                     .$nowcompanies[$x]['firstname']; 
                }
        }       
*SQL查询*
而($row=$result->fetch()){
$PastCompanys[]=数组(
'companyid'=>$row['id'],
'name'=>$row['name'],
'contactid'=>$row['contactid'],
“firstname”=>$row[“firstname”],
'lastname'=>$row['lastname'],
'email'=>$row['email']
);
}   
*SQL查询*
而($row=$result->fetch()){
$nowCompanys[]=数组(
'companyid'=>$row['id'],
'name'=>$row['name'],
'contactid'=>$row['contactid'],
“firstname”=>$row[“firstname”],
'lastname'=>$row['lastname'],
'email'=>$row['email']
);
}   

对于($x=0;$x),与执行比较的数据库查询相比,对数组进行比较是缓慢、不必要和不安全的。使用
join
比较两个表的查询更健壮

SELECT * FROM companies c
JOIN past_companies pc 
ON pc.companyid = c.companyid
WHERE pc.contactid != c.contactid;

上面的这段代码应该为您提供一个结果集,其中所有的名字都与以前不同。这样就不需要在php上比较数组。请注意,这段代码只是在数据库上进行比较的示例。

您不能在数据库上运行此比较查询吗?SQL设计用于进行此类比较。
$PastCompanys[$row['id']]=array(
&
$NowCompanys[$row['id']]]=array(
)?谢谢,你说得对,我应该在mySQL查询中这样做