如何使用php检查多个数组中的重复值

时间:2017-09-18 08:58:00

标签: php arrays

我有多个阵列。我想检查重复数据。如果有重复值,我想忽略它并转到另一个值。我写了代码。但是,这是行不通的。请帮我。

这是我的数组

    Array([1] => Array([STUDENT_ID] => 200301
               [SUBJECT_NAME] => maths
               [ASSIGNMENT_TITLE] => exam_1
               [MARKS] => 25 )
  [2] => Array([STUDENT_ID] => 200301
               [SUBJECT_NAME] => maths
               [ASSIGNMENT_TITLE] => exam_2
               [MARKS] => 45 )
  [3] => Array([STUDENT_ID] => 200301
               [SUBJECT_NAME] => art
               [ASSIGNMENT_TITLE] => exam_1
               [MARKS] => 76 )
  [4] => Array([STUDENT_ID] => 200301
               [SUBJECT_NAME] => art
               [ASSIGNMENT_TITLE] => exam_2
               [MARKS] => 42 )
  [5] => Array([STUDENT_ID] => 200302
               [SUBJECT_NAME] => maths
               [ASSIGNMENT_TITLE] => exam_1
               [MARKS] => 71 )
  [6] => Array([STUDENT_ID] => 200302
               [SUBJECT_NAME] => maths
               [ASSIGNMENT_TITLE] => exam_2
               [MARKS] => 78 )
  [7] => Array([STUDENT_ID] => 200302
               [SUBJECT_NAME] => art
               [ASSIGNMENT_TITLE] => exam_1
               [MARKS] => 35 )
  [8] => Array([STUDENT_ID] => 200302
               [SUBJECT_NAME] => art
               [ASSIGNMENT_TITLE] => exam_2
               [MARKS] => 61 )
 )

我编写了PHP代码

foreach($result as $item => &$rv) {

if($item == 0) {
    $subjectName = $rv[SUBJECT_NAME];
    echo '***'.$rv[SUBJECT_NAME];
}
if(strcmp($rv[SUBJECT_NAME] === $subjectName)) {
    continue; 
    }else {

    $subjectName = $rv[SUBJECT_NAME];
    echo '---'. $rv[SUBJECT_NAME];
}
}

我希望像这张表一样创建

|-------+------------+-----------------+-----------------+
|       |            |     maths       |      art        |  
|Seq No | Student Id |-----------------|-----------------|
|       |            | Exam 1 | Exam 2 | Exam 1 | Exam 2 |
|-------+------------+-----------------+-----------------+
|  1    | 200301     |   25   |   45   |  76    |  42    |
|  2    | 200302     |   71   |   78   |  35    |  61    |
|-------+------------+--------+--------+--------+--------|

2 个答案:

答案 0 :(得分:0)

因此,您可以在temp数组中存储主题明智的值,然后检查该数组

<?php
$tmp_results = array();
foreach($result as $item => &$rv) {
    if(!isset($tmp_results[$rv['SUBJECT_NAME']]))
    {
        echo '***'.$rv['SUBJECT_NAME'];
        $tmp_results[$rv['SUBJECT_NAME']] = $rv;
    }
}
//Also now $tmp_results contains only uniques subjetcs
print_r($tmp_results);

答案 1 :(得分:0)

我从您的代码中了解到,您需要一个包含源数组中所有主题的数组。您可以使用两个简单的PHP数组函数来完成此操作:

$subjects = array_unique(array_column($result,'SUBJECT_NAME'));

请参阅:http://php.net/manual/en/function.array-column.php

并且:http://php.net/manual/en/function.array-unique.php