我有两个比较两个值(比如$ 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[])
答案 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 ) ;