PHP Conference Kansai 2025

array_intersect_assoc

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

array_intersect_assocCalcula la intersección de dos arrays con pruebas sobre los índices

Descripción

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

array_intersect_assoc() devuelve un array que contiene todos los valores de array que también están presentes en todos los otros argumentos. Tenga en cuenta que las claves también se utilizan durante la comparación, a diferencia de array_intersect().

Parámetros

array

El array con los valores maestros a verificar.

arrays

Arrays a comparar

Valores devueltos

Devuelve un array asociativo que contiene todos los valores del array array que están presentes en todos los argumentos.

Historial de cambios

Versión Descripción
8.0.0 Esta función ahora puede ser llamada con un solo parámetro. Anteriormente, se requerían al menos dos parámetros.

Ejemplos

Ejemplo #1 Ejemplo con array_intersect_assoc()

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

El resultado del ejemplo sería:

Array
(
    [a] => green
)

En nuestro ejemplo, se puede ver que el par "a" => "green" está presente en ambos arrays, y por lo tanto se coloca en el último array. El valor red no se devuelve porque en $array1 su índice es 0 mientras que en el array $array2, su índice es 1, y la clave "b" no se devuelve, porque su valor es diferente en cada array.

Los dos valores del par clave => valor se consideran iguales solo si (string) $elem1 === (string) $elem2. En otras palabras, se realiza una comparación estricta en las representaciones de los índices, con el tipo string.

Ver también

  • array_intersect() - Calcula la intersección de arrays
  • array_uintersect_assoc() - Calcula la intersección de dos arrays con pruebas sobre el índice, compara los datos utilizando una función de retrollamada
  • array_intersect_uassoc() - Calcula la intersección de dos arrays con pruebas en los índices, compara los índices utilizando una función de retrollamada
  • array_uintersect_uassoc() - Calcula la intersección de dos arrays con pruebas en el índice, compara los datos y los índices de los dos arrays utilizando una función de retrollamada separada
  • array_diff() - Calcula la diferencia entre arrays
  • array_diff_assoc() - Calcula la diferencia de dos arrays, teniendo en cuenta las claves
add a note

User Contributed Notes 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
20 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