PHP数组匹配并计算匹配的值

时间:2014-12-27 12:39:39

标签: php arrays count match

我有两个比较两个值(比如$ sid1和$ sid2)并匹配它们并找出相似和不相似值的总数(我的意思是计算值)。请通过编写

来帮助我

1)存储从数组

中的while循环获取的值

2)比较两个数组以计算相似和不相似的值

**My Program**

$sql="select * from table1 where qn1='$op2'";
$ds=mysql_query($sql);

while ($r=mysql_fetch_array($ds)) {
    $sid1=$r[‘a’];
    //need correct syntax for the below
    $a[]= $sid1;
}

$sql2="select * from table2 where qn4='$op3'";
$ds2=mysql_query($sql2);

while ($r2=mysql_fetch_array($ds2)) {
    //need correct syntax for the below
    $sid2=$r2[‘a’];
    $b[]= $sid2;
}

//how to match the array and count
Array ($a[] == $b[])

2 个答案:

答案 0 :(得分:0)

首先你的第一行是错的。使用#My Program代替**my program** 您也可以将结果直接存储到数组中。 并且请记住mysql()已离开php,因此您应使用mysqli()功能。 对于你的建议,你应该使用array_intersect()功能。它返回一个匹配项数组。并且您可以使用sizeof()函数来计算匹配项的数量,因此您的代码应该是这样的:

<?php
$sql="select * from table1 where qn1='$op2'";
$ds=mysqli_query($connection,$sql);
 while ($r=mysqli_fetch_assoc($ds))
{
$a[]= $r['a'];
}
$sql2="select * from table2 where qn4='$op3'";
$ds2=mysqli_query($connection,$sql2);
while ($r2=mysqli_fetch_assoc($ds2))
{
$b[]= $r2['a'];
}
$match_items=array_intersect($a, $b);
$count=sizeof($match_items);
?>

答案 1 :(得分:0)

以下程序可以帮助您。

当您在SQL表中 SELECT * 时,SQL TABLE 可能会有多个列生成多维数组,如下所示。

array (size=200)
  0 => 
    array (size=10)
      'id' => string '18' (length=2)
      'email' => string 'abc@xyz.com' (length=11)
      'userName' => string 'abc' (length=3)
  1 => 
    array (size=10)
      'id' => string '19' (length=2)
      'email' => string 'cdf@xyz.com' (length=11)
      'userName' => string 'cdf (length=3)
  2=>
    ....
  3=>
    ....

然后你必须检查一个表的整行是否与另一个表整行匹配。所以你可以通过以下方法实现它。

<?php
// DB Connection    
$db = new PDO( 'mysql:host=HOSTNAME;dbname=DB_NAME;charset=utf8', 'DB_USER_NAME', 'DB_PASSWORD', array( PDO::ATTR_EMULATE_PREPARES => false, PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION ) );

//Queries
$sql_query1 = "SELECT * FROM TABLE1 WHERE `qn1` = 'ABC';";
$sql_query2 = "SELECT * FROM TABLE2 WHERE `qn2` = 'XYZ';";

$data1 = $db -> query( $sql_query1 ) -> fetchAll( PDO::FETCH_ASSOC );
$data2 = $db -> query( $sql_query2 ) -> fetchAll( PDO::FETCH_ASSOC );

$notFound = array();
$found = array();
foreach ($data1 as $key => $value1) {
    foreach ($data2 as $key => $value2) {
        if( array_diff( $value1, $value2 ) ){
            // NotFound Array
            $notFound[] = $value1;
        } else {
            // Found Array
            $found[] = $value1;
        }
    }
}

echo "Not Found data1 Elements in data2 :  " . count( $notFound ) . "\n<br/> Found data1 Elements in data2 :" . count( $found ) ;