array_diff() 正在删除第二个数组中同一键上明显不同的值,但在不同键上找到相同的值

问题描述 投票:0回答:2

我有 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) }

我不明白。为什么会这样?

php arrays filter associative-array array-difference
2个回答
4
投票

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


2
投票
我尝试使用

http://php.net/manual/en/function.array-diff-assoc.php,我得到了

array (size=1) 'c' => int 1
至于使用 array_diff 它会比较值...

© www.soinside.com 2019 - 2025. All rights reserved.