удалить дублированные данные из двух разных циклов foreach - PullRequest
0 голосов
/ 18 февраля 2019

У меня есть два для каждой петли.Каждый работает на другой стол

$nores_std="SELECT std_id,std_name FROM student WHERE std_class = '$cl' ";
$nores_q = mysqli_query($link,$nores_std);
foreach ($nores_q as $name_std){
echo $name_std['std_id']; echo '<br>';
}
echo '<br>';
$no_select = "SELECT std_id,std_name FROM selection WHERE std_class = '$cl' ";
$no_select_q = mysqli_query($link,$no_select);
foreach ( $no_select_q as $std_sel){
    echo $std_sel['std_id'];
    echo '<br>';
}

Первый результат:

**554553**
**554557**
554561
**554566**
554573
**554577**
554581
554582
554587
**554590**
554591
554593
554596
554597
554599
554602
554603
554604
554607
554619
554620
554632
554637
554640
554643
554648
**554549**

И второй результат:

554566
554577
554549
554590
554553
554557

Я хотел бы проверитьдублирование и удалите значения дублирования, отобразите только те, которые не дублируются в

Ответы [ 2 ]

0 голосов
/ 18 февраля 2019

Наиболее эффективным способом было бы выбрать отличную от двух таблиц в одном запросе:

SELECT DISINCT std_id, std_name FROM
(
        SELECT std_id, std_name FROM student   WHERE std_class = '$cl'
  UNION SELECT std_id, std_name FROM selection WHERE std_class = '$cl'
) t
0 голосов
/ 18 февраля 2019

Решение PHP: array-diff :

$nores_std="SELECT std_id,std_name FROM student WHERE std_class = '$cl' ";
$nores_q = mysqli_query($link,$nores_std);
foreach ($nores_q as $name_std){
    $a[] = $name_std['std_id'];
}

$no_select = "SELECT std_id,std_name FROM selection WHERE std_class = '$cl' ";
$no_select_q = mysqli_query($link,$no_select);
foreach ( $no_select_q as $std_sel){
    $b[] = $std_sel['std_id'];
}

$res = array_diff($a, $b);

Примечание. Вы можете использовать array-column , чтобы избежать цикла foreach

Я бы перепроверил схему данных - возможно, вы захотите получить данные по-другому

...