Delicious Bookmark this on Delicious Share on Facebook SlashdotSlashdot It! Digg! Digg



PHP : Function Reference : Array Functions : array_intersect_assoc

array_intersect_assoc

Computes the intersection of arrays with additional index check (PHP 4 >= 4.3.0, PHP 5)
array array_intersect_assoc ( array array1, array array2 [, array ...] )

array_intersect_assoc() returns an array containing all the values of array1 that are present in all the arguments. Note that the keys are used in the comparison unlike in array_intersect().

Parameters

array1

The array with master values to check.

array2

An array to compare values against.

array

A variable list of arrays to compare.

Return Values

Returns an associative array containing all the values in array1 that are present in all of the arguments.

Examples

Example249.array_intersect_assoc() example

<?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);
?>

The above example will output:

Array
(
[a] => green
)


In our example you see that only the pair "a" => "green" is present in both arrays and thus is returned. The value "red" is not returned because in $array1 its key is 0 while the key of "red" in $array2 is 1.

The two values from the key => value pairs are considered equal only if (string) $elem1 === (string) $elem2 . In other words a strict type check is executed so the string representation must be the same.

Related Examples ( Source code ) » array_intersect_assoc


Code Examples / Notes » array_intersect_assoc

str: str

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;
}
?>


asharm4

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;
}


nleippe

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;
}
?>


vandor

# 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
)


Change Language


Follow Navioo On Twitter
array_change_key_case
array_chunk
array_combine
array_count_values
array_diff_assoc
array_diff_key
array_diff_uassoc
array_diff_ukey
array_diff
array_fill_keys
array_fill
array_filter
array_flip
array_intersect_assoc
array_intersect_key
array_intersect_uassoc
array_intersect_ukey
array_intersect
array_key_exists
array_keys
array_map
array_merge_recursive
array_merge
array_multisort
array_pad
array_pop
array_product
array_push
array_rand
array_reduce
array_reverse
array_search
array_shift
array_slice
array_splice
array_sum
array_udiff_assoc
array_udiff_uassoc
array_udiff
array_uintersect_assoc
array_uintersect_uassoc
array_uintersect
array_unique
array_unshift
array_values
array_walk_recursive
array_walk
array
arsort
asort
compact
count
current
each
end
extract
in_array
key
krsort
ksort
list
natcasesort
natsort
next
pos
prev
range
reset
rsort
shuffle
sizeof
sort
uasort
uksort
usort
eXTReMe Tracker