array_intersect_assoc

(PHP 4 >= 4.3.0, PHP 5)

array_intersect_assocCalcula la intersección de arrays con un chequeo adicional de índices

Descripción

array array_intersect_assoc ( array $array1 , array $array2 [, array $ ... ] )

array_intersect_assoc() retorna un arrays que contiene todos los valores de array1 que están presentes en todos los arguementos. Notar que las keys son usadas en la comparación, a diferencia de array_intersect().

Parámetros

array1

Array con los valores maestros para verificar.

array2

Un array contra el cual comparar los valores.

array

Una lista variable de arrays para comparar.

Valores devueltos

Retorna un array asociativo que contiene todos los valores de array1 que están presentes en todos los argumentos.

Ejemplos

Ejemplo #1 Ejemplo de 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 el ejemplo se ve que sólo el par "a" => "green" está presente en ambos arrays y por lo tanto es retornada. El valor "red" no se retorna porque en $array1 su key es 0 mientras que la key de "red" en $array2 es 1 y la key "b" no es retornada debido a que sus valores son diferentes en cada array.

Los dos valores del par key => value son considerados iguales sólo si (string) $elem1 === (string) $elem2 . En otras palabras una verificación de tipo estricto es ejecutada, por lo cual la representación de la cadena debe ser la misma.

Ver también

  • array_intersect() - Calcula la intersección de arrays
  • array_uintersect_assoc() - Computa la intersección de arrays con una comprobación de índices adicional, compara la información mediante una función de llamada de retorno
  • array_intersect_uassoc() - Calcula la intersección de arrays con un chequeo adicional de índices que se realiza por una función de devolución de llamada
  • array_uintersect_uassoc() - Computa la intersección de arrays con una comprobación de índices adicional, compara la información y los índices mediante funciones de llamada de retorno
  • array_diff() - Calcula la diferencia entre arrays
  • array_diff_assoc() - Calcula la diferencia entre arrays con un chequeo adicional de índices
add a note add a note

User Contributed Notes 3 notes

up
2
Whitend
1 year 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
2
StR: str at strgt dot cjb dot net
8 years ago
To find the keys that are in 2 arrays, without caring of the values:

This is a function i needed, and it also returns the values of the first array

<?php
function array_key_intersect(&$a, &$b) {
 
$array = array();
  while (list(
$key,$value) = each($a)) {
    if (isset(
$b[$key]))
     
$array[$key] = $value;
  }
  return
$array;
}
?>
up
0
vandor at progressive dot hu
9 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