我有 2 个相同的 PHP 数组。只有一个值不同。我想找到这个值:
var_dump(array_diff(array(
"a" => "1",
"b" => "SomeString",
"c" => 1, // <- different value, same key
"d" => "4521",
"e" => "7546654241",
"f" => "78",
"g" => "99.999",
"h" => "34",
"i" => "http://google.com/"
), array(
"a" => "1",
"b" => "SomeString",
"c" => "0", // <- different value, same key
"d" => "4521",
"e" => "7546654241",
"f" => "78",
"g" => "99.999",
"h" => "34",
"i" => "http://google.com/"
)));
结果是
array(0) { }
,但应该有新的 "c"
值,但没有。当我删除所有其他值时:
var_dump(array_diff(array(
"c" => 1
), array(
"c" => "0"
)));
我得到了我想要的
array(1) { ["c"]=> int(1) }
。
我不明白。为什么会这样?
array_diff() 匹配第一个数组到第二个数组的 值
returns the values in array1 that are not present in any of the other arrays.
中键
1
的值
c
在第二个数组中存在作为键a
的值,因此array_diff()将识别没有区别也许使用
array_diff_assoc() 会给你你真正想要得到的结果.... http://ideone.com/xHCVfF
http://php.net/manual/en/function.array-diff-assoc.php,我得到了
array (size=1)
'c' => int 1
至于使用 array_diff 它会比较值...