La función array_diff_uassoc() es una función integrada en PHP y se usa para obtener la diferencia entre una o más arrays usando una función definida por el usuario para comparar las claves. Esta función compara tanto las claves como los valores entre una o más arrays y devuelve los elementos de la primera array que no están en el resto de las arrays. Las teclas se comparan de acuerdo con la función definida por el usuario proporcionada a esta función. Nota: Esta función es diferente a PHP | Función array_diff_assoc() Como en la función array_diff_assoc(), las claves se comparan de acuerdo con alguna función interna, mientras que en la función array_diff_uassoc(), las claves se comparan de acuerdo con una función definida por el usuario que se le pasa como parámetro.
Sintaxis:
array_diff_uassoc($array1, $array2, $array3, ..., $arrayn, user_function)
Parámetros: esta función acepta una lista de arrays como parámetro y una función definida por el usuario que se utilizará para la comparación de claves.
- list_of_array: Esta función toma una lista de arreglos separados por espacios de los cuales queremos encontrar la diferencia. En la sintaxis anterior, la lista de arreglos es $arreglo1, $arreglo2, $arreglo3, …, $arreglo . Esta lista debe contener al menos dos arrays; de lo contrario, se lanzará una advertencia.
- user_function: este es un parámetro de tipo string que representa el nombre de la función definida por el usuario que se utilizará para la comparación de claves. La función devuelve un número entero menor, mayor o igual a 0 si el primer argumento es mayor, menor o igual que el segundo argumento.
Valor de retorno: esta función devuelve una array que contiene los elementos de la primera array $array1 que no están presentes en las otras arrays que se le pasan en los parámetros. La comparación se realiza entre clave y valor del primer arreglo $arreglo1 con el resto de arreglos. La comparación de claves se realiza según la función definida por el usuario. Ejemplos:
Input : $a1=array(10=>"striver", 20=>"raj", 30=>"geek") $a2=array(20=>"striver", 10=>"raj", 30=>"geek") function user_function($a, $b) { if ($a===$b) { return 0; } return ($a>$b)?1:-1; } Output: Array ( [10] => striver [20] => raj ) Explanation: Since user_function returns 0 when keys are equal and 1 and -1 when greater and less respectively. So, the elements with unequal keys are in the output array.
Los siguientes programas ilustran la función array_diff_uassoc() en PHP:
Programa 1 :
PHP
<?php // PHP program to illustrate the // array_diff_uassoc() function // user defined function that returns 0 if // $array1's keys are equal to any other // input array, else returns 1 if greater, // or -1 if smaller function user_function($a, $b) { if ($a===$b) { return 0; } return ($a>$b)? 1: -1; } // Input Arrays $a1=array(10=>"striver", 20=>"raj", 30=>"geek"); $a2=array(20=>"striver", 10=>"raj", 30=>"geek"); $result = array_diff_uassoc($a1, $a2, "user_function"); print_r($result); ?>
Producción:
Array ( [10] => striver [20] => raj )
Programa 2 :
PHP
<?php // PHP program to illustrate the // array_diff_uassoc() function // user defined function that returns 1 if // $array1's keys are equal to any other // input array, else returns 1 if greater, // or 0 if smaller function user_function($a, $b) { if ($a===$b) { return 1; } return ($a>$b)? 1: 0; } // Input Arrays $a1 = array(10=>"striver", 20=>"raj", 30=>"geek"); $a2 = array(20=>"striver", 10=>"raj", 30=>"geek"); $result=array_diff_uassoc($a1, $a2, "user_function"); print_r($result); ?>
: Salida:
Array ( [20] => raj [30] => geek )
- array_diff_uassoc() Para array multidimensional:
La función array_diff_uassoc() solo funciona para una array unidimensional. para verificar arrays multidimensionales con esta función, podemos usar el método de indexación.
Por ejemplo, para array 2D:
array_diff_assoc($array1[index], $array2[index], $array3[index], ..., $arrayn[index], user_function)
En el Programa a continuación, estamos comparando dos arrays que se colocan en el primer índice de las arrays bidimensionales a1 y a2.
Programa 3:
PHP
<?php function user_function($a, $b) { if ($a===$b) { return 0; } return ($a>$b)? 1: -1; } // Input Arrays $a1 = array(array("a" => "green", "b" => "yellow", "c" => "white", "black"), "b" => "brown", "c" => "blue", "red"); $a2 = array(array("a" => "green", "b" => "yellow", "white", "d" => "black"), "yellow", "red"); $result = array_diff_uassoc($a1[0], $a2[0], "user_function"); print_r($result); ?>
Producción:
Array ( => white [0] => black )
Referencia : http://php.net/manual/en/function.array-diff-uassoc.php