Funksie array_udiff_assoc

Funksie array_udiff_assoc gee 'n array terug wat alle elemente van die eerste array bevat wat afwesig is in die daaropvolgende arrays. Sleutels word vergelyk deur PHP se ingeboude meganisme, en waardes word vergelyk met behulp van 'n gebruiker-gedefinieerde callback-funksie.

Sintaksis

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

Voorbeeld

Vergelyking van arrays met 'n gebruikerfunksie:

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

Uitslag van kode-uitvoering:

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

Voorbeeld

Vergelyking met numeriese indekse:

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

Uitslag van kode-uitvoering:

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

Voorbeeld

Komplekse vergelyking van objekte:

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

Uitslag van kode-uitvoering:

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

Sien ook

  • funksie array_diff_assoc,
    wat die verskil van arrays met indekskontrole bereken
  • funksie array_udiff,
    wat die verskil van arrays met 'n callback-funksie bereken (sonder indekskontrole)