REFERENCE PHP

dernière mise à jour de la documentation : décembre 2014
.NET | Apache | APC | APD | Tableaux | Aspell | BBCode | BC math | bcompiler | Bzip2 | Calendrier | CCVS | Classes et Objets | Classkit | ClibPDF | COM | Fonctions Crack | ctype | CURL | Cybercash | CyberMUT | Cyrus IMAP | Date/heure | DB++ | DBA | dBase | DBM | dbx | DIO | Dossiers | DOM | DOM XML | enchant | Erreurs | EXIF | Expect | FAM | FDF | Fileinfo | filePro | Système de fichiers | Filter | Firebird/InterBase | Firebird/Interbase (PDO) | FriBiDi | FrontBase | FTP | Fonctions | GeoIP | gettext | GMP | gnupg | gopher | haru | hash | http | Hyperwave | Hyperwave API | i18n | IBM (PDO) | ibm_ db2 | iconv | id3 | Fonctions IIS | Images | Imagick Image Library | IMAP | Informix | Informix (PDO) | Ingres II | Interface IRC | Intégration de Java avec PHP | JSON | kadm5 | LDAP | libxml | Lotus Notes | LZF | Mail | Traitement d'Email | Maths | MaxDB | MCAL | mcrypt | MCVE | Memcache | mhash | Mimetype | Ming (Flash) | Divers | mnoGoSearch | MS SQL Serveur | MS SQL Server (PDO) | Msession | mSQL | Chaînes de caractères multi-octets | muscat | MySQL | MySQL (PDO) | MySQLi | Fonctions ncurses | Réseau | Newt | NSAPI | agrégation d'objets | Surcharge d'objets | OCI8 | ODBC | ODBC et DB2 (PDO) | OGG/Vorbis | openal | OpenSSL | Oracle | Oracle (PDO) | Bufferisation de sortie | OvrimosSQL | Paradox | Parsekit | PCNTL | PCRE | PDF | PDO | phar | Options et informations PHP | POSIX | Regex POSIX | PostgreSQL | PostgreSQL (PDO) | Impressions | Exécution de programmes | PS | Pspell | Fonctions qtdom | radius | Rar | Readline | GNU Recode | RPMReader | runkit | SAM | Satellite | SCA | SDO | SDO DAS XML | SDO-DAS-Relational | Sémaphore | SESAM | Session PgSQL | Sessions | shmop | SimpleXML | SNMP | SOAP | Sockets | spl | SQLite | SQLite (PDO) | ssh2 | statistics | Flux | Chaînes | SVN | SWF | swish | Sybase | TCP Wrappers | Tidy | Tokenizer | Unicode | Fonctions URL | Gestion des variables | Paiement par Verisign | vpopmail | W32api | WDDX | win32ps | win32service | xattr | xdiff | XML | XML-RPC | XMLReader | XMLWriter | XSL | XSLT | YAZ | NIS | Zip | Zlib



array_udiff

(PHP 5)

array_udiffCalcule la différence entre deux tableaux en utilisant une fonction rappel

Description

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

Calcule la différence entre deux tableaux en utilisant une fonction rappel. Cette fonctionne agit comme la fonction array_diff() qui utilise une fonction interne pour comparer les données.

Liste de paramètres

array1

Le premier tableau.

array2

Le second tableau.

value_compare_func

La fonction de comparaison.

La fonction de comparaison doit retourner un entier inférieur à, égal à, ou supérieur à 0 si le premier argument est considéré comme, respectivement, inférieur à, égal à, ou supérieur au second.

int callback ( mixed $a, mixed $b )

Valeurs de retour

Retourne un tableau contenant toutes les valeurs du tableau array1 qui ne sont pas présentes dans aucun autre argument.

Exemples

Exemple #1 Exemple avec array_udiff() en utilisant les objets stdClass

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

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

// Définit quelques propriétés pour chaque objet
$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'));
?>

L'exemple ci-dessus va afficher :


Array

(

    [0] => stdClass Object

        (

            [width] => 11

            [height] => 3

        )



    [1] => stdClass Object

        (

            [width] => 7

            [height] => 1

        )



)

Exemple #2 Exemple avec array_udiff() en utilisant des objets 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;
        }
    }
}

// Crée un calendr ier pour les rendez-vous hébdomadaires
$myCalendar = new MyCalendar;

// Enregistre quelques rendez-vous pour cette semaine
$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.");

// Vérifie la disponibilité en jours, en comparant les dates $booked avec les dates $free
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"
}
?>

L'exemple ci-dessus va afficher :


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.

Notes

Note: Notez que cette fonction ne vérifie qu'une seule dimension d'un tableau multidimensionnel. Vous pouvez, bien sûr, tester une dimension particulière en utilisant par exemple array_udiff($array1[0], $array2[0], "data_compare_func");.

Voir aussi

  • array_diff() - Calcule la différence entre des tableaux
  • array_diff_assoc() - Calcule la différence de deux tableaux, en prenant aussi en compte les clés
  • array_diff_uassoc() - Calcule la différence entre deux tableaux associatifs, à l'aide d'une fonction de rappel
  • array_udiff_assoc() - Calcule la différence entre des tableaux avec vérification des index, compare les données avec une fonction de rappel
  • array_udiff_uassoc() - Calcule la différence de deux tableaux associatifs, compare les données et les index avec une fonction de rappel
  • array_intersect() - Calcule l'intersection de tableaux
  • array_intersect_assoc() - Calcule l'intersection de deux tableaux avec des tests sur les index
  • array_uintersect() - Calcule l'intersection de deux tableaux, compare les données en utilisant une fonction de rappel
  • array_uintersect_assoc() - Calcule l'intersection de deux tableaux avec des tests sur l'index, compare les données en utilisant une fonction de rappel
  • array_uintersect_uassoc() - Calcule l'intersection de deux tableaux avec des tests sur l'index, compare les données et les indexes des deux tableaux en utilisant une fonction de rappel

Exemples d'utilisation