PHP Массив сопоставления и подсчета совпадающих значений

У меня есть два сравнить два значения (скажем, $ 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

Решение

Прежде всего, ваша первая строка неверна. использование #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);
?>
0

Другие решения

Ниже программа может помочь вам.

Когда ты ВЫБРАТЬ * в таблице 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 ) ;
0

По вопросам рекламы [email protected]