Php 数组_diff并不总是正确的

Php 数组_diff并不总是正确的,php,arrays,diff,Php,Arrays,Diff,我展示了数组中值之间的差异示例,有时无法正确工作。 $fields = array( '1x1' => 'k', '1x2' => 'B', '1x3' => 'c', '2x1' => 'd', '2x2' => 'x', '2x3' => 'Y', '3x1' => 'b', '3x2' => 'e', '3x3' => 'f' ); print_r($fields

我展示了数组中值之间的差异示例,有时无法正确工作。
$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
    [3x1] => b
)
为什么PHP的
b
等于
z

如何修复此问题?

请参见将“b”同时放入$answer和$fields数组中


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

请将“b”同时放入$answer和$fields数组中


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

这是正确的。根据:

阵列差异(阵列$array1,阵列$array2[,阵列$…])

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

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

当且仅当(字符串)$elem1时,两个元素被视为相等=== (字符串)$elem2。换句话说:当字符串表示形式相同时


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

这是正确的。根据:

阵列差异(阵列$array1,阵列$array2[,阵列$…])

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

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

当且仅当(字符串)$elem1时,两个元素被视为相等=== (字符串)$elem2。换句话说:当字符串表示形式相同时


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

方法没有错,比较这两个列表,它们都包含
B
方法没有错,比较这两个列表,它们都包含
B

顺序对
数组不重要。
。关键在于这些值以及它们是否在另一个数组中。如果一个值在数组中是2倍还是3倍也无关紧要,只要它存在一次就足够了。array_diff将array1与一个或多个其他数组进行比较,并返回array1中任何其他数组中都不存在的值。@Rizier123:你说得对!对于
数组_diff()
,顺序并不重要。关键在于这些值以及它们是否在另一个数组中。如果一个值在数组中是2倍还是3倍也无关紧要,只要它存在一次就足够了。array_diff将array1与一个或多个其他数组进行比较,并返回array1中任何其他数组中都不存在的值。@Rizier123:你说得对!hi bro,数组_diff()未返回正确的输出everytime@rajanasekhar什么意思?请提供一个示例。hi bro,array_diff()未返回正确的输出everytime@rajanasekhar什么意思?请提供一个例子。
(
    [1x1] => k
    [1x2] => B
    [2x3] => Y
    [3x1] => b
)