我在寻找一个方式给我看不同的属性/值从给定的对象......比较对象的属性和在PHP
$obj1 = new StdClass; $obj1->prop = 1;
$obj2 = new StdClass; $obj2->prop = 2;
var_dump(array_diff((array)$obj1, (array)$obj2));
//output array(1) { ["prop"]=> int(1) }
这工作得很好,只要财产是不是对象或数组。
$obj1 = new StdClass; $obj1->prop = array(1,2);
$obj2 = new StdClass; $obj2->prop = array(1,3);
var_dump(array_diff((array)$obj1, (array)$obj2))
// Output array(0) { }
// Expected output - array { ["prop"]=> array { [1]=> int(2) } }
有没有办法摆脱这一点,即使当属性是另一个对象?!
通常你在类的方法解决这个问题,就像一个'等于($对象)'方法。也许你不能修改课程? – 2011-05-06 12:15:53
哦,当比较包含对象的属性时,你如何看待对象是相等的?这是一种递归问题......您可以检查它们的属性是否相等(递归问题...)或者它们是否是相同的实例(比平等更强)。 – 2011-05-06 12:17:20
是您正在测试的确切的一个以上的代码?如果是这样,那么$ obj1和$ obj2的prop是相同的数组(1,2)。技术上确实没有区别。 – dragonjet 2011-05-07 07:37:21