如何对两个数组使用array_diff

时间:2015-02-01 12:12:46

标签: php arrays

我有一个PHP类,想要使用两个数组比较数据,如下面的代码所示。

但是,我想在这里展示两个阵列的差异数据。

我已经尝试过以下代码,但它无法正常工作,我对此感到困惑。

<?php
class TestClass{
    public $fool = 'hehe';
    public $fool2 = 'huhu';
    public $fool3 = 'haha';
    public $fool4 = 'haha';

    public function __toString()
    {
        return $this->fool;
        return $this->fool2;
        return $this->fool3;
        return $this->fool4;

    }

}


$arr1 = array();
$class = new TestClass;
$class ->fool='one day';
$class ->fool2 ='test';
array_push($arr1,$class);

$arr2 = array();
$class2 = new TestClass;
$class2 ->fool ='one day';
$class2 ->fool2 ='different test';
array_push($arr2,$class2);

echo print_r($arr1).'<br/>';
echo print_r($arr2).'<br/>';
$result=array_diff($arr1,$arr2);
print_r($result);



?>

1 个答案:

答案 0 :(得分:0)

即使我不同意您的目标以及您这样做的方式,您也要混合太多东西,只是为了修复您的代码:

class TestClass{
    public $fool = 'hehe';
    public $fool2 = 'huhu';
    public $fool3 = 'haha';
    public $fool4 = 'haha';

    public function __toString()
    {
        return '1: '.$this->fool.'; 2: '.$this->fool2.'; 3: '.$this->fool3.'; 4: '.$this->fool4;
    }

    public function asArray()
    {
        return array($this->fool, $this->fool2,$this->fool3,$this->fool4);
    }
}

$arr1 = array();
$class = new TestClass;
$class ->fool='one day';
$class ->fool2 ='test';
$arr1[]=$class;

$arr2 = array();
$class2 = new TestClass;
$class2 ->fool ='one day';
$class2 ->fool2 ='different test';
$arr2[] = $class2;

echo $arr1[0]."\n";
echo $arr2[0];
print_r($result);

$result=array_diff($arr1[0]->asArray(),$arr2[0]->asArray());

print_r($result);