我在尋找一個方式給我看不同的屬性/值從給定的對象......比較對象的屬性和在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