मैं एक तरह से के लिए खोज कर रहा हूँ मुझे दिया वस्तुओं से अलग गुण/मान दिखाने के लिए ...वस्तु गुण और 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) } }
वहाँ एक रास्ता इस से छुटकारा पाने के है, तब भी जब संपत्ति किसी अन्य वस्तु है?!
आमतौर पर आप कक्षा में एक विधि के साथ इस संभाल, एक 'बराबर ($ वस्तु)' विधि की तरह। शायद आप कक्षा को संशोधित नहीं कर सकते? –
ओह, और वस्तुओं वाले गुणों की तुलना करते समय, आप कैसे मानते हैं कि ऑब्जेक्ट बराबर हैं? यह एक पुनरावर्ती प्रश्न है ... आप जांच सकते हैं कि उनकी गुण बराबर हैं (रिकर्सिव समस्या ...) या यदि वे एक ही उदाहरण हैं (समानता से मजबूत)। –
आपके द्वारा परीक्षण किए जा रहे सटीक कोड के ऊपर कोड है? यदि हां, तो $ obj1 और $ obj2 के प्रोप एक ही सरणी (1,2) हैं। तकनीकी रूप से वास्तव में कोई फर्क नहीं पड़ता है। – dragonjet