PHP-php 查找打印两个对象中属性值不同的属性
不管对象属性的值是什么类型,如果来比较两个对象属性值不同的属性?看一下下面例子:
$user1 = new UserClass();
$obj1->age = 20;
$user2 = new UserClass();
$user2>age = 25;
var_dump(array_diff((array)$user1, (array)$user2));
//结果 array(1) { ["age"]=> int(20) }
$user1 = new UserClass();
$obj1->age = array(10,20);
$user2 = new UserClass();
$user2>age = array(10,25);
var_dump(array_diff((array)$user1, (array)$user2));
// 结果 array(0) { }
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
这个函数是PHP文档里的,我就借花献佛了,呵呵
class UserClass{
public $age;
}
$user1 = new UserClass();
$user1->age = 20;
$user2 = new UserClass();
$user1->age = 25;
var_dump(array_diff((array)$user1, (array)$user2));
//结果 array(1) { ["age"]=> int(20) }
$user3 = new UserClass();
$user3->age = array(10,20);
$user4 = new UserClass();
$user4->age = array(10,25);
var_dump(arr_diff((array)$user3, (array)$user4));
//array(1) { ["age"]=> array(1) { [0]=> int(20) } }
function arr_diff($a1,$a2){
foreach($a1 as $k=>$v){
unset($dv);
if(is_int($k)){
// Compare values
if(array_search($v,$a2)===false) $dv=$v;
else if(is_array($v)) $dv=arr_diff($v,$a2[$k]);
if($dv) $diff[]=$dv;
}else{
// Compare noninteger keys
if(!$a2[$k]) $dv=$v;
else if(is_array($v)) $dv=arr_diff($v,$a2[$k]);
if($dv) $diff[$k]=$dv;
}
}
return $diff;
}