array_intersect_assoc
array_intersect_assoc($pole, $dalsi, …)
Vrátí prvky prvního pole, ke kterým ve všech dalších polích existuje prvek se stejným klíčem a zároveň stejnou hodnotou.
Parametry
- $pole – pole, ze kterého se vybírá.
- $dalsi – pole, se kterým se porovnává. Polí může následovat libovolný počet.
Příklady
print_r(array_intersect_assoc(array("a" => 1, "b" => 2, "c" => 3), array("a" => 1, "b" => 5, "d" => 3))); // Array ( [a] => 1 )
// které údaje zůstaly stejné
$puvodni = array("jmeno" => "Jan", "mesto" => "Praha", "vek" => "30");
$nove = array("jmeno" => "Jan", "mesto" => "Brno", "vek" => "30");
print_r(array_intersect_assoc($nove, $puvodni)); // Array ( [jmeno] => Jan [vek] => 30 )
// vyhovuje záznam všem podmínkám filtru?
$filtr = array("mesto" => "Praha", "aktivni" => "1");
$zaznam = array("jmeno" => "Jan", "mesto" => "Praha", "aktivni" => "1");
var_dump(array_intersect_assoc($filtr, $zaznam) === $filtr); // bool(true)
// u obyčejných polí rozhoduje i pozice
echo implode(",", array_intersect_assoc(array("a", "b", "c"), array("a", "x", "c"))); // a,c
// hodnoty se porovnávají jako text: 1 a "1" jsou totéž
echo count(array_intersect_assoc(array("x" => 1), array("x" => "1"))); // 1
Na co si dát pozor
- Musí souhlasit klíč i hodnota. Jen podle hodnot porovnává array_intersect(), jen podle klíčů array_intersect_key().
- Hodnoty se porovnávají jako text, takže 30 a „30“ nebo null a prázdný text jsou totéž.
- Pro vnořená pole se nehodí, porovnává jen první úroveň.
- Opačnou otázku – co se liší – zodpoví array_diff_assoc().
Příbuzné funkce:
array_intersect()
array_intersect_key()
array_diff_assoc()