array_diff_uassoc

(PHP 5, PHP 7)

array_diff_uassocOblicza różnicę tablic z dodatkowym sprawdzeniem indeksu wykonywanym przez podaną przez użytkownika funkcję

Opis

array_diff_uassoc ( array $array1 , array $array2 [, array $... ], callable $key_compare_func ) : array

Porównuje array1 z array2 i zwraca różnicę. W przeciwieństwie do array_diff() przy porównywaniu używane są klucze tablic.

W przeciwieństwie do array_diff_assoc() do porównań kluczy używana jest funkcja podana przez użytkownika, nie wewnętrzna funkcja.

Parametry

array1

Tablica do porównania

array2

Tablica, z którą ma porównać funkcja

...

Więcej tablic, z którymi ma porównać funkcja

key_compare_func

Funkcja porównująca musi zwrócić liczbę całkowitą mniejszą, równą lub większą od zera jeśli pierwszy argument jest uważany za odpowiednio mniejszy, równy lub większy od drugiego. Przed PHP 7.0.0 ta liczba musiała być z zakresu -2147483648 do 2147483647.

callback ( mixed $a, mixed $b ) : int

Zwracane wartości

Zwraca tablicę (array) zawierającą wszystkie wpisy z tablicy array1, które nie istnieją w żadnej z innych tablic.

Przykłady

Przykład #1 Przykład użycia array_diff_uassoc()

Para "a" => "green" istnieje w obu tablicach i dlatego nie ma jej w wyniku działania funkcji. Z kolei para 0 => "red" jest w wyniku ponieważ w drugim parametrze "red" ma klucz który wynosi 1.

<?php
function key_compare_func($a$b)
{
    if (
$a === $b) {
        return 
0;
    }
    return (
$a $b)? 1:-1;
}

$array1 = array("a" => "green""b" => "brown""c" => "blue""red");
$array2 = array("a" => "green""yellow""red");
$result array_diff_uassoc($array1$array2"key_compare_func");
print_r($result);
?>

Powyższy przykład wyświetli:

Array
(
    [b] => brown
    [c] => blue
    [0] => red
)

Identyczność dwóch indeksów jest sprawdzana przy użyciu funkcji zwrotnej podanej przez użytkownika.

Notatki

Informacja:

Ta funkcja sprawdza tylko jeden wymiar tablicy wielowymiarowej. Można oczywiście porównywać głębsze wymiary używając przykładowo array_diff_uassoc($array1[0], $array2[0], "key_compare_func");.

Zobacz też:

  • array_diff() - Zwraca różnicę między tablicami
  • array_diff_assoc() - Oblicza różnicę między tablicami z dodatkowym sprawdzaniem kluczy
  • array_udiff() - Computes the difference of arrays by using a callback function for data comparison
  • array_udiff_assoc() - Computes the difference of arrays with additional index check, compares data by a callback function
  • array_udiff_uassoc() - Computes the difference of arrays with additional index check, compares data and indexes by a callback function
  • array_intersect() - Zwraca przecięcie tablic
  • array_intersect_assoc() - Wylicza przecięcie tablic z dodatkowym sprawdzaniem indeksów
  • array_uintersect() - Computes the intersection of arrays, compares data by a callback function
  • array_uintersect_assoc() - Oblicza przecięcie tablic z dodatkowym sprawdzaniem indeksów, porównując dane przez funkcję zwrotną
  • array_uintersect_uassoc() - Computes the intersection of arrays with additional index check, compares data and indexes by separate callback functions

add a note add a note

User Contributed Notes 1 note

up
6
MD. ABU SAYEM
10 years ago
//array_diff_uassoc for multidimenssional array
$color_1=array('a'=>'white','b'=>'red','c'=>array('a'=>'green','b'=>'blue','c'=>'yellow'));
$color_2=array('a'=>'white','b'=>'red','c'=>array('a'=>'white','b'=>'red','c'=>'yellow'));

function key_compare($a,$b){
    if($a===$b)        return 0;
    return($a>$b)?1:-1;
}
print_r(array_diff_uassoc($color_1['c'], $color_2['c'],"key_compare"));

//Output
Array
(
    [a] => green
    [b] => blue
)
To Top