Función array_udiff_assoc

La función array_udiff_assoc devuelve un array que contiene todos los elementos del primer array que no están presentes en los arrays siguientes. La comparación de claves se realiza mediante el mecanismo interno de PHP, y la de valores mediante una función callback definida por el usuario.

Sintaxis

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

Ejemplo

Comparación de arrays con función personalizada:

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"));
?>

Resultado de la ejecución del código:

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

Ejemplo

Comparación con índices numéricos:

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"));
?>

Resultado de la ejecución del código:

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

Ejemplo

Comparación compleja de objetos:

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"));
?>

Resultado de la ejecución del código:

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

Véase también

  • la función array_diff_assoc,
    que calcula la diferencia de arrays con comprobación de índices
  • la función array_udiff,
    que calcula la diferencia de arrays con función callback (sin comprobación de índices)