Functie array_udiff_assoc

De functie array_udiff_assoc retourneert een array die alle elementen van de eerste array bevat die ontbreken in de volgende arrays. Sleutelvergelijking wordt uitgevoerd door het ingebouwde mechanisme van PHP, en waardevergelijking met behulp van een door de gebruiker gedefinieerde callback-functie.

Syntaxis

phparray_udiff_assoc(array $array1, array $array2, ..., callable $value_compare_func): array

Voorbeeld

Arrays vergelijken met een aangepaste functie:

php<?php
  function compare($a, $b) {
    return $a <=> $b;
  }

  $array1 = ["a" => "green", "b" => "brown", "c" => "blue"];
  $array2 = ["a" => "green", "b" => "yellow", "d" => "blue"];
  
  print_r(array_udiff_assoc($array1, $array2, "compare"));
?>

Uitvoerresultaat van de code:

phpArray
(
  [b] => brown
  [c] => blue
)

Voorbeeld

Vergelijken met numerieke indexen:

php<?php
  function numCompare($a, $b) {
    return $a - $b;
  }

  $array1 = [10 => "apple", 20 => "banana", 30 => "cherry"];
  $array2 = [10 => "pear", 20 => "banana", 40 => "cherry"];
  
  print_r(array_udiff_assoc($array1, $array2, "strcmp"));
?>

Uitvoerresultaat van de code:

phpArray
(
  [10] => apple
  [30] => cherry
)

Voorbeeld

Complexe objectvergelijking:

php<?php
  class Product {
    public $id;
    public $name;
    
    public function __construct($id, $name) {
      $this->id = $id;
      $this->name = $name;
    }
  }

  function objCompare($a, $b) {
    return strcmp($a->name, $b->name);
  }

  $products1 = [
    "p1" => new Product(1, "Laptop"),
    "p2" => new Product(2, "Phone")
  ];
  
  $products2 = [
    "p1" => new Product(3, "Tablet"),
    "p3" => new Product(2, "Phone")
  ];
  
  print_r(array_udiff_assoc($products1, $products2, "objCompare"));
?>

Uitvoerresultaat van de code:

phpArray
(
  [p1] => Product Object
    (
      [id] => 1
      [name] => Laptop
    )
)

Zie ook

  • de functie array_diff_assoc,
    die het verschil van arrays berekent met indexcontrole
  • de functie array_udiff,
    die het verschil van arrays berekent met een callback-functie (zonder indexcontrole)