array_diff并不总是正确的

时间:2016-09-01 08:41:03

标签: php arrays diff

我在数组中显示了值之间的差异示例,有时并不能正常工作。

+------------+--------------+--------------+------------------+-----------------+---------------+
| meeting_id | meeting_date | meeting_time | candidate1_id    | candidate2_id   |meeting_count  |
+------------+--------------+--------------+------------------+-----------------+---------------+
|          6 | 2016-08-31   | 17:45:00     |               24 |              28 |             2 |
|          4 | 2016-08-31   | 19:30:00     |               24 |              23 |             1 |
|          3 | 2016-08-31   | 18:30:00     |               24 |              22 |             1 |
|          2 | 2016-08-31   | 19:15:00     |               24 |              21 |             2 |
+------------+--------------+--------------+------------------+-----------------+---------------+

结果是:

$fields = array(
    '1x1' => 'k',
    '1x2' => 'B',
    '1x3' => 'c',
    '2x1' => 'd',
    '2x2' => 'x',
    '2x3' => 'Y',
    '3x1' => 'b',
    '3x2' => 'e',
    '3x3' => 'f'
);

print_r($fields);

$answer = array(
    'a',
    'b',
    'c',
    'd',
    'x',
    'y',
    'z',
    'e',
    'f'
);

print_r($answer);

echo '<hr />DIFF:<br />';

print_r(array_diff($fields, $answer));

?>

但应该是:

(
    [1x1] => k
    [1x2] => B
    [2x3] => Y
)

为什么PHP ( [1x1] => k [1x2] => B [2x3] => Y [3x1] => b ) b相同? 如何修复?

3 个答案:

答案 0 :(得分:2)

这是正确的。根据{{​​3}}:

  

数组array_diff(数组$ array1,数组$ array2 [,数组$ ...])

     

将array1与一个或多个其他数组进行比较并返回   array1中的值,不存在于任何其他数组中。

文档中的另一个重要信息:

  

当且仅当(字符串)$ elem1 ===时,才认为两个元素相等   (字符串)$ elem2。用文字表示:当字符串表示相同时。

因此,在$answers数组中,k, B, Y数组中没有$fields个元素。

答案 1 :(得分:2)

该方法没有错,比较2个列表,它们都包含b

答案 2 :(得分:0)

看到你把&#39; b&#39;进入$ answer和$ fields数组。

这就是为什么它给你这样的输出。