У меня есть два сравнить два значения (скажем, $ 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[])
Прежде всего, ваша первая строка неверна. использование #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);
?>
Ниже программа может помочь вам.
Когда ты ВЫБРАТЬ * в таблице SQL, то SQL TABLE может иметь более одного столбца результирующий многомерный массив, как показано ниже.
array (size=200)
0 =>
array (size=10)
'id' => string '18' (length=2)
'email' => string '[email protected]' (length=11)
'userName' => string 'abc' (length=3)
1 =>
array (size=10)
'id' => string '19' (length=2)
'email' => string '[email protected]' (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 ) ;