array_udiff

(PHP 5, PHP 7)

array_udiff锟矫回碉拷锟斤拷锟斤拷锟饺斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷牟罴�

说锟斤拷

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

使锟矫回碉拷锟斤拷锟斤拷锟饺斤拷锟斤拷锟捷o拷锟斤拷锟斤拷锟斤拷锟斤拷牟锟酵拷锟斤拷锟斤拷锟� array_diff() 锟斤拷同锟斤拷锟角o拷前锟斤拷使锟斤拷锟斤拷锟矫猴拷锟斤拷锟斤拷锟斤拷锟斤拷锟捷比较★拷

锟斤拷锟斤拷

array1

锟斤拷一锟斤拷锟斤拷锟介。

array2

锟节讹拷锟斤拷锟斤拷锟介。

value_compare_func

锟截碉拷锟斤拷锟秸猴拷锟斤拷锟斤拷

锟节碉拷一锟斤拷锟斤拷锟斤拷小锟节o拷锟斤拷锟节伙拷锟斤拷诘诙锟斤拷锟斤拷锟斤拷锟绞憋拷锟斤拷帽冉虾锟斤拷锟斤拷锟斤拷锟斤拷锟接︼拷胤锟斤拷锟揭伙拷锟叫★拷冢锟斤拷锟斤拷诨锟斤拷锟斤拷 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() - 锟斤拷锟斤拷锟斤拷锟斤拷牟罴�
  • array_diff_assoc() - 锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷牟罴�
  • array_diff_uassoc() - 锟斤拷锟矫伙拷锟结供锟侥回碉拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟侥差集
  • array_udiff_assoc() - 锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷牟罴拷锟斤拷没氐锟斤拷锟斤拷锟斤拷冉锟斤拷锟斤拷锟�
  • array_udiff_uassoc() - 锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷牟罴拷锟斤拷没氐锟斤拷锟斤拷锟斤拷冉锟斤拷锟斤拷莺锟斤拷锟斤拷锟�
  • array_intersect() - 锟斤拷锟斤拷锟斤拷锟斤拷慕锟斤拷锟�
  • array_intersect_assoc() - 锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷慕锟斤拷锟�
  • array_uintersect() - 锟斤拷锟斤拷锟斤拷锟斤拷慕锟斤拷锟斤拷锟斤拷没氐锟斤拷锟斤拷锟斤拷冉锟斤拷锟斤拷锟�
  • array_uintersect_assoc() - 锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷慕锟斤拷锟斤拷锟斤拷没氐锟斤拷锟斤拷锟斤拷冉锟斤拷锟斤拷锟�
  • array_uintersect_uassoc() - 锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷慕锟斤拷锟斤拷锟斤拷玫锟斤拷锟斤拷幕氐锟斤拷锟斤拷锟斤拷冉锟斤拷锟斤拷莺锟斤拷锟斤拷锟�