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

search for in the

array_intersect_key> <array_flip
[edit] Last updated: Sat, 07 Jan 2012

view this page in

array_intersect_assoc

(PHP 4 >= 4.3.0, PHP 5)

array_intersect_assocErmittelt die Schnittmenge von Arrays mit Indexprüfung

Beschreibung

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

array_intersect_assoc() gibt ein Array mit allen Werten von array1, die auch in allen anderen Argumenten enthalten sind, zurück. Beachten Sie, dass anders als von array_intersect() die Schlüssel zum Vergleich herangezogen werden.

Parameter-Liste

array1

Ein Array mit den Hauptwerten, die geprüft werden sollen.

array2

Ein Array, gegen welches die Werte geprüft werden sollen.

array

Weitere Arrays gegen welche geprüft werden soll.

Rückgabewerte

Gibt ein assoziatives Array zurück, welches alle Werte aus array1 enthält, welche auch in allen anderen Argumenten enthalten sind.

Beispiele

Beispiel #1 array_intersect_assoc() Beispiel

<?php
$array1 
= array("a" => "grün""b" => "braun""c" => "blau""rot");
$array2 = array("a" => "grün""gelb""rot");
$ergebnis_array array_intersect_assoc($array1$array2);
print_r($ergebnis_array);
?>

Das oben gezeigte Beispiel erzeugt folgende Ausgabe:

Array
(
    [a] => grün
)

In unserem Beispiel sehen Sie, dass einzig das Paar "a" => "green" in beiden Arrays enthalten ist und daher zurückgegeben wird. Der Wert "rot" wird nicht zurückgegeben, weil sein Schlüsselwert in $array1 0 ist, wohingegen der Schlüssel von "rot" in $array2 den Wert 1 hat. Der Schlüssel "b" wird nicht zurückgegeben, weil er in beiden Arrays einen anderen Wert hat.

Die beiden Werte des Schlüssel => Wert Paares werden als gleich erachtet, genau dann wenn (string) $elem1 === (string) $elem2 . Anders ausgedrückt wird eine strikte Typenprüfung durchgeführt, so dass die Stringrepresentation gleich sein muss.

Siehe auch

  • array_intersect() - Ermittelt die Schnittmenge von Arrays
  • array_uintersect_assoc() - Ermittelt die Schnittmenge von Arrays mit zusätzlicher Indexprüfung, vergleicht Daten mittels einer Callbackfunktion
  • array_intersect_uassoc() - Ermittelt die Schnittmenge von Arrays mit Indexprüfung; vergleicht Indizes mit einer Callbackfunktion
  • array_uintersect_uassoc() - Ermittelt die Schnittmenge von Arrays mit zusätzlicher Indexprüfung, vergleicht Daten und Schlüssel mittels einer Callbackfunktion
  • array_diff() - Ermittelt die Unterschiede zwischen Arrays
  • array_diff_assoc() - Berechnet den Unterschied zwischen Arrays mit zusätzlicher Indexprüfung


array_intersect_key> <array_flip
[edit] Last updated: Sat, 07 Jan 2012
 
add a note add a note User Contributed Notes array_intersect_assoc
amoo_miki at yahoo dot com 17-Jul-2009 12:58
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.
asharm4 at ilstu dot edu 20-Apr-2006 09:20
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;
}
StR: str at strgt dot cjb dot net 13-Oct-2005 05:34
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;
}
?>
vandor at progressive dot hu 14-Dec-2004 11:26
# 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
)
nleippe at integr8ted dot com 11-Feb-2004 04:46
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;
}
?>

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