当数组中元素的顺序不重要甚至可能发生变化时,断言两个对象数组相等的好方法是什么?
最简洁的方法是使用新的断言方法扩展 phpunit。但现在有一个更简单的方法的想法。未经测试的代码,请验证:
在您的应用程序中的某处:
/** * Determine if two associative arrays are similar * * Both arrays must have the same indexes with identical values * without respect to key ordering * * @param array $a * @param array $b * @return bool */ function arrays_are_similar($a, $b) { // if the indexes don't match, return immediately if (count(array_diff_assoc($a, $b))) { return false; } // we know that the indexes, but maybe not values, match. // compare the values between the two arrays foreach($a as $k => $v) { if ($v !== $b[$k]) { return false; } } // we have identical indexes, and no unequal values return true; }
在您的测试中:
$this->assertTrue(arrays_are_similar($foo, $bar));