PHP Arrays: Comparação de Arrays

No PHP existem várias funcionalidades para trabalhar com comparação de arrays, vamos ver as principais delas:

array_diff(array1, array2, [array3…]): Essa função compara o array1 com os outros arrays e retorna os elementos do array1 que não existem nos outros arrays.
[code]
$array1 = [10, 20, 30];
$array2 = [10, 30];
var_dump(array_diff($array1, $array2));
[/code]

array(1) { [1]=> int(20) }

array_diff_assoc(array1, array2, [array3…]): Funciona da mesma forma do array_diff mas também leva em consideração as chaves do array.
[code]
$array1 = [‘a’ => 10, ‘b’ => 20, ‘c’ => 30];
$array2 = [‘a’=> 10, ‘b’ => 30, ‘c’ =>’20’];
var_dump(array_diff_assoc($array1, $array2));
[/code]

array(2) { ["b"]=> int(20) ["c"]=> int(30) }

array_diff_key(array1, array2, [array3…]): Faz a comparação das chaves do array1 que não existem nos outros arrays, retornando um novo array com esses elementos.
[code]
$array1 = [‘a’ => 10, ‘b’ => 20, ‘c’ => 30, ‘d’ => 40];
$array2 = [‘a’=> 10, ‘b’ => 30, ‘c’ =>’20’];
var_dump(array_diff_key($array1, $array2));
[/code]

array(1) { ["d"]=> int(40) }

array_intersect(array1, array2, [array3…]): Ao contrário do array_diff, o array intersect retorna um novo array que contem os elementos do array1 que TAMBÉM existem nos outros arrays.
[code]
$array1 = [10, 20, 30];
$array2 = [10, 30];
var_dump(array_intersect($array1, $array2));
[/code]

array(2) { [0]=> int(10) [2]=> int(30) }

array_intersect_assoc(array1, array2, [array3…]): Funciona da mesma forma do array_intersect mas também leva em consideração as chaves.

array_intersect_key(array1, array2, [array3…]): Compara as chaves do array1 com os outros arrays retornando os elementos de array1 que tem as mesmas chaves em elementos dos outros arrays.
[code]
$array1 = [‘a’ => 10, ‘b’ => 20, ‘c’ => 30];
$array2 = [‘a’ => 10, ‘b’ => 30, ‘c’ => 20];
$array3 = [‘a’ => 10, ‘b’ => 25];
var_dump(array_intersect_key($array1, $array2, $array3));
[/code]

array(2) { ["a"]=> int(10) ["b"]=> int(20) }

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *