我在数组中显示了值之间的差异示例,有时并不能正常工作。
+------------+--------------+--------------+------------------+-----------------+---------------+
| 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
相同?
如何修复?
答案 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数组。
这就是为什么它给你这样的输出。