downloads | documentation | faq | getting help | mailing lists | licenses | wiki | reporting bugs | php.net sites | conferences | my php.net

search for in the

array_intersect_key> <array_flip
[edit] Last updated: Fri, 14 Jun 2013

view this page in

array_intersect_assoc

(PHP 4 >= 4.3.0, PHP 5)

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

Descrição

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

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

Parâmetros

array1

O array com os valores a serem verificados.

array2

O array para comparar os valores.

array

Uma lista de arrays para comparação.

Valor Retornado

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

Exemplos

Exemplo #1 Exemplo da array_intersect_assoc()

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

O exemplo acima irá imprimir:

Array
(
    [a] => green
)

Em nosso exemplo você pode ver que somente o par "a" => "green" está presente em ambos array, então logo é retornado. O valor "red" não é retornado porque no $array1 a chave é 0 quando a chave de "red" no $array2 é 1.

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
  • array_diff() - Analisa as diferenças entre arrays
  • array_diff_assoc() - Computa a diferença entre arrays com checagem adicional de índice


array_intersect_key> <array_flip
[edit] Last updated: Fri, 14 Jun 2013
 
add a note add a note User Contributed Notes array_intersect_assoc - [6 notes]
up
3
Whitend
10 months 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
1
vandor at progressive dot hu
8 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
)
up
1
StR: str at strgt dot cjb dot net
7 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
-1
nleippe at integr8ted dot com
9 years ago
A combination of the two functions [array_intersect() and array_intersect_assoc()] in order to obtain the intersection of two multidimensional arrays.

<?php
function array_intersect_assoc_recursive(&$arr1, &$arr2) {
    if (!
is_array($arr1) || !is_array($arr2)) {
        return
$arr1 == $arr2; // or === for strict type
   
}
   
$commonkeys = array_intersect(array_keys($arr1), array_keys($arr2));
   
$ret = array();
    foreach (
$commonkeys as $key) {
       
$ret[$key] =& array_intersect_assoc_recursive($arr1[$key], $arr2[$key]);
    }
    return
$ret;
}
?>
up
-1
amoo_miki at yahoo dot com
3 years ago
A method to find intersection of two or more arrays when comparison is based only on keys

array_uintersect_assoc($array1  , $array2  [, $ array...  ], create_function(null, "return 0;"));

This returns an associative array containing all the keys in array1 that are present in all of the arguments.
up
-2
asharm4 at ilstu dot edu
7 years ago
A function to find intersection of two arrays when comparison is based on only 1 key

function array_common($array1,$array2,$compareString) {
   if (!is_array($array1) || !is_array($array2)) {
       return false;
   }
   $arrResult = array();
   foreach ($array1 as $arrInsideArray1) {
       foreach ($array2 as $arrInsideArray2) {
           $found=false;
           if ($arrInsideArray1[$compareString]==$arrInsideArray2[$compareString]) {
               $found=true;
               break;
           }
       }
       if ($found) {
           array_push($arrResult,$arrInsideArray1);
       }

   }
   return $arrResult;
}

 
show source | credits | stats | sitemap | contact | advertising | mirror sites