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
)