判断2个assoc数组内容是否相同
我正在尝试使用 PHP 函数来比较 2 个数组,如果它们相同则返回 true。
示例:
assertArrayEquals(array('a'=>1, 'b'=>2), array('a'=>1, 'b'=>2)); // True
assertArrayEquals(array('a'=>1, 'b'=>2), array('b'=>2, 'a'=>1)); // True
assertArrayEquals(array('a'=>1, 'b'=>2), array(1, 2)); // false
assertArrayEquals(array(2, 1), array(1, 2)); // false
有什么想法吗?
编辑: 其他测试用例:
assertArrayEquals(array('a'=>1, 'b'=>2), array('a'=>1, 'b'=>2, 'c'=>3)); // false
assertArrayEquals(array('a'=>1, 'b'=>2, 'c'=>3), array('a'=>1, 'b'=>2)); // false
assertArrayEquals(array('a'=>0), array('a'=>'foo')); // false
I'm trying to have a PHP function that compare 2 array and return true if they are identical.
Example:
assertArrayEquals(array('a'=>1, 'b'=>2), array('a'=>1, 'b'=>2)); // True
assertArrayEquals(array('a'=>1, 'b'=>2), array('b'=>2, 'a'=>1)); // True
assertArrayEquals(array('a'=>1, 'b'=>2), array(1, 2)); // false
assertArrayEquals(array(2, 1), array(1, 2)); // false
Any idea ?
Edit:
Other tests cases:
assertArrayEquals(array('a'=>1, 'b'=>2), array('a'=>1, 'b'=>2, 'c'=>3)); // false
assertArrayEquals(array('a'=>1, 'b'=>2, 'c'=>3), array('a'=>1, 'b'=>2)); // false
assertArrayEquals(array('a'=>0), array('a'=>'foo')); // false
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(6)
使用 array_diff_assoc:
http://codepad.org/YoZIGjBY
Use array_diff_assoc:
http://codepad.org/YoZIGjBY
查看 http://php.net/array_diff 和 http://php.net/array_intersect
或者,如果您要做的只是检查是否相等:
对两个数组进行排序并使用 === 检查(如果您是害怕的小猫)
check out http://php.net/array_diff and http://php.net/array_intersect
Or if all you wnna do is check for equality:
sort both arrays and check with === (or == if you're a scaredy kitty)
使用
==
。php 手册:数组运算符:
示例 4 不会通过,因为键/值对不相同:
0 =>; 2、 1 => 1
与0 => 1, 1 => 2.
.编辑:
如果数组包含不同的变量类型,请使用
即使对于注释中的示例,这也会给出预期的结果:
Use
==
.php Manual: Array Operators:
Example 4 won't pass as the key/value pairs are not the same:
0 => 2, 1 => 1
vs0 => 1, 1 => 2
.EDIT:
If arrays contain different variable types, use
This will give expected results even for the example in the comment:
看起来您想确保数组具有相同的键/值对(严格类型),但不一定按相同的顺序。所以,订单要一致,严格比对。
通过测试,
我还建议选择一个更好的函数名称,从长远来看,您当前的选择不会给您带来任何好处!
It looks like you want to make sure the arrays have the same key/value pairs (strictly typed) but not necessarily in the same order. So, make the orders consistent and strictly compare them.
By way of testing,
I would also advise picking a better function name, your current choice is not going to do you any favours in the long run!
PHP 有一个用于此目的的函数。
$result 将返回数组中所有不同的内容。如果它们相同,则不会返回任何内容。
PHP has a function for this.
$result will return everything that is different in the arrays. If they are the same it will return nothing.
基本上我们使用 array_diff() 来检查两个给定数组之间是否有任何差异。如果没有,那么它们是相等的。
尽管有这种简洁的形式,您仍然可以使用简单的
==
来比较两个数组。以下是一些经过测试的示例:
此脚本输出:
truetruefalsefalse
;Basically we use array_diff() to check whatever there are any difference between the two given array. If there are not, then they are equal.
Despite this clean form, you could use the simple
==
to compare the two array.Here's some tested samples:
This script output:
truetruefalsefalse
;