array_udiff

(PHP 5, PHP 7)

array_udiff�ûص������Ƚ���������������IJ

˵��

array_udiff ( array $array1 , array $array2 [, array $... ], callable $value_compare_func ) : array

ʹ�ûص������Ƚ����ݣ���������IJ�֮ͬ������ array_diff() ��ͬ���ǣ�ǰ��ʹ�����ú����������ݱȽϡ�

����

array1

��һ�����顣

array2

�ڶ������顣

value_compare_func

�ص����պ�����

�ڵ�һ������С�ڣ����ڻ���ڵڶ�������ʱ���ñȽϺ���������Ӧ�ط���һ��С�ڣ����ڻ���� 0 ��������

callback ( mixed $a, mixed $b ) : int

����ֵ

���� array1 ��û�г��������������������ֵ��

����

Example #1 array_udiff() ʹ�� stdClass ���������

<?php
// Arrays to compare
$array1 = array(new stdclass, new stdclass,
                new 
stdclass, new stdclass,
               );

$array2 = array(
                new 
stdclass, new stdclass,
               );

// Set some properties for each object
$array1[0]->width 11$array1[0]->height 3;
$array1[1]->width 7;  $array1[1]->height 1;
$array1[2]->width 2;  $array1[2]->height 9;
$array1[3]->width 5;  $array1[3]->height 7;

$array2[0]->width 7;  $array2[0]->height 5;
$array2[1]->width 9;  $array2[1]->height 2;

function 
compare_by_area($a$b) {
    
$areaA $a->width $a->height;
    
$areaB $b->width $b->height;
    
    if (
$areaA $areaB) {
        return -
1;
    } elseif (
$areaA $areaB) {
        return 
1;
    } else {
        return 
0;
    }
}

print_r(array_udiff($array1$array2'compare_by_area'));
?>

�������̻������

Array
(
    [0] => stdClass Object
        (
            [width] => 11
            [height] => 3
        )

    [1] => stdClass Object
        (
            [width] => 7
            [height] => 1
        )

)

Example #2 array_udiff() ʹ�� DateTime ���������

<?php
class MyCalendar {
    public 
$free = array();
    public 
$booked = array();

    public function 
__construct($week 'now') {
        
$start = new DateTime($week);
        
$start->modify('Monday this week midnight');
        
$end = clone $start;
        
$end->modify('Friday this week midnight');
        
$interval = new DateInterval('P1D');
        foreach (new 
DatePeriod($start$interval$end) as $freeTime) {
            
$this->free[] = $freeTime;
        }
    }

    public function 
bookAppointment(DateTime $date$note) {
        
$this->booked[] = array('date' => $date->modify('midnight'), 'note' => $note);
    }

    public function 
checkAvailability() {
        return 
array_udiff($this->free$this->booked, array($this'customCompare'));
    }
    
    public function 
customCompare($free$booked) {
        if (
is_array($free)) $a $free['date'];
        else 
$a $free;
        if (
is_array($booked)) $b $booked['date'];
        else 
$b $booked;
        if (
$a == $b) {
            return 
0;
        } elseif (
$a $b) {
            return 
1;
        } else {
            return -
1;
        }
    }
}

// Create a calendar for weekly appointments
$myCalendar = new MyCalendar;

// Book some appointments for this week
$myCalendar->bookAppointment(new DateTime('Monday this week'), "Cleaning GoogleGuy's apartment.");
$myCalendar->bookAppointment(new DateTime('Wednesday this week'), "Going on a snowboarding trip.");
$myCalendar->bookAppointment(new DateTime('Friday this week'), "Fixing buggy code.");

// Check availability of days by comparing $booked dates against $free dates
echo "I'm available on the following days this week...\n\n";
foreach (
$myCalendar->checkAvailability() as $free) {
    echo 
$free->format('l'), "\n"
}
echo 
"\n\n";
echo 
"I'm busy on the following days this week...\n\n";
foreach (
$myCalendar->booked as $booked) {
    echo 
$booked['date']->format('l'), ": "$booked['note'], "\n"
}
?>

�������̻������

I'm available on the following days this week...

Tuesday
Thursday


I'm busy on the following days this week...

Monday: Cleaning GoogleGuy's apartment.
Wednesday: Going on a snowboarding trip.
Friday: Fixing buggy code.

ע��

Note: ע�Ȿ����ֻ����˶�ά�����е�һά����Ȼ�������� array_udiff($array1[0], $array2[0], "data_compare_func"); ���������ά�ȡ�

�μ�

  • array_diff() - ��������IJ
  • array_diff_assoc() - ����������������IJ
  • array_diff_uassoc() - ���û��ṩ�Ļص������������������������IJ
  • array_udiff_assoc() - ����������������IJ���ûص������Ƚ�����
  • array_udiff_uassoc() - ����������������IJ���ûص������Ƚ����ݺ�����
  • array_intersect() - ��������Ľ���
  • array_intersect_assoc() - ����������������Ľ���
  • array_uintersect() - ��������Ľ������ûص������Ƚ�����
  • array_uintersect_assoc() - ����������������Ľ������ûص������Ƚ�����
  • array_uintersect_uassoc() - ����������������Ľ������õ����Ļص������Ƚ����ݺ�����