ConFoo 2025

array_intersect_assoc

(PHP 4 >= 4.3.0, PHP 5, PHP 7, PHP 8)

array_intersect_assocComputa a interseção de arrays com uma adicional verificação de índice

Descrição

array_intersect_assoc(array $array, array ...$arrays): array

array_intersect_assoc() retorna um array contendo todos os valores de array que estão presentes em todos os argumentos. Note que estas chaves também são usadas na comparação diferindo de array_intersect().

Parâmetros

array

O array com os valores a serem verificados.

arrays

Arrays para comparar os valores.

Valor Retornado

Retorna um array associativo contendo todos os valores em array que estão presentes em todos os argumentos.

Registro de Alterações

Versão Descrição
8.0.0 Esta função agora pode ser chamada com apenas um parâmetro. Anteriormente, pelo menos dois parâmetros eram necessários.

Exemplos

Exemplo #1 Exemplo da array_intersect_assoc()

<?php
$array1
= array("a" => "verde", "b" => "marrom", "c" => "azul", "vermelho");
$array2 = array("a" => "verde", "b" => "amarelo", "azul", "vermelho");
$result_array = array_intersect_assoc($array1, $array2);
print_r($result_array);
?>

O exemplo acima produzirá:

Array
(
    [a] => verde
)

Em nosso exemplo, é possível ver que somente o par "a" => "verde" está presente em ambos array, então logo é retornado. O valor "vermelho" não é retornado porque no $array1 a chave é 0 quando a chave de "vermelho" no $array2 é 1, e a chave "b" não será retornada por que seu valor é diferente em cada array.

Os dois valores dos pares key => value são considerados iguais somente se (string) $elem1 === (string) $elem2 . Em outras palavras, uma verificação do tipo é executada, então a representação string precisa ser a mesma.

Veja Também

  • array_intersect() - Calcula a interseção entre arrays
  • array_uintersect_assoc() - Computa a interseção de arrays com checagem adicional de índice, compara os dados utilizando uma função de callback
  • array_intersect_uassoc() - Computa a interseção de arrays com checagem de índice adicional, compara índices por uma função de callback
  • array_uintersect_uassoc() - Computa a interseção de arrays com checagem adicional de índice, compara os dados e os índices utilizando funções de callback separadas
  • array_diff() - Computa as diferenças entre arrays
  • array_diff_assoc() - Computa a diferença entre arrays com checagem adicional de índice
adicione uma nota

Notas Enviadas por Usuários (em inglês) 2 notes

up
6
Whitend
12 years ago
One of the ways to get intersection of two arrays is as follows:

<?php
function arrayIntersect( $primary_array, $secondary_array ) {

if ( !
is_array( $primary_array ) || !is_array( $secondary_array ) ) {
return
false;
}

if ( !empty(
$primary_array ) ) {

foreach(
$primary_array as $key => $value ) {

if ( !isset(
$secondary_array[$key] ) ) {
unset(
$primary_array[$key] );
} else {
if (
serialize( $secondary_array[$key] ) != serialize( $value ) ) {
unset(
$primary_array[$key] );
}
}

}

return
$primary_array;

} else {
return array();
}

}
?>

It would pay attention to both keys and values even if values would be arrays as well. One important note is that if value of $primary_array is yet another array, its order of key & value pairs becomes important for matching.
up
4
vandor at progressive dot hu
19 years ago
# ket tomb kulcs alapu metszetet szamitja ki, az erteken is ellenorzest vegez
#
# calculating (key base) intersection of arrays (value are checked)
# use: $result_array = array_intersect_assoc($a1, $a2, $a3,..);
#
##
# original code by [jochem at iamjochem dawt com] : array_diff_keys()

<?php
function array_intersect_assoc() {

$args = func_get_args();
$res = $args[0];

for (
$i=1;$i<count($args);$i++) {
if (!
is_array($args[$i])) {continue;}

foreach (
$res as $key => $data) {
if ( (!
array_key_exists($key, $args[$i])) || ( (isset($args[$i][$key])) && ($args[$i][$key] !== $res[$key]) ) ) {
unset(
$res[$key]);
}
}
}

return
$res;
}

?>

<?php
$array1
= array("a"=>"green", "b"=>"brown", "c"=>"blue", "red");
$array2 = array("a"=>"green", "b"=>"yellow", "c"=>"yellow", "red");
$a = array('a'=>'green', 'b'=>'brown', 'c'=>'yellow');
$b = array('a'=>'green', 'b'=>'brown', 'c'=>'yellow', 'e'=>'yellow');

$result_array = array_intersect_assoc($a, $b, $array1, $array2);
?>

$args array will look like:

(
0 =>
(
a => green
b => brown
c => yellow
)

1 =>
(
a => green
b => brown
c => yellow
e => yellow
)

2 =>
(
a => green
b => brown
c => blue
0 => red
)

3 =>
(
a => green
b => yellow
c => yellow
0 => red
)

)

$result_array will look like:

(
a => green
)
To Top