array_intersect_key - Český PHP manuál
Funkce vrátí pole, jehož klíče jsou průnikem klíčů dvou polí. Možná to zní trochu matematicky, ale funkce je velmi dobře použitelná např. pro bezpečné zkopírování dat z $_POST.
Parametry
V obou parametrech jsou očekávána pole, z jejichž klíčů se udělá průnik.
V prvním poli se ponechají jen ty klíče, které jsou přítomné i v poli druhém. Druhé pole tedy můžeme chápat jako vzorové. Hodnoty z 2. pole se do výsledku nikdy nedostanou.
Návratová hodnota
Pole s průnikem klíčů obou polí.
Příklad
Ukažme si, jak lze funkci využít pro bezpečné vyfiltrování pole, které nám odeslal uživatel (např. hodnoty v $_POST).
<?php // $pole by bylo ve skutečnosti $_POST $pole = array( 'jmeno' => 'Jan', 'prijmeni' => 'Novák', 'hodnoceni' => 'Nejlepší programátor na světě' ); $povolene = array('jmeno', 'prijmeni'); $pole = array_intersect_key($pole, array_flip($povolene)); print_r($pole);
Obsah $pole je tedy nyní pouze:
Array ( [jmeno] => Jan [prijmeni] => Novák )
Pomocí array_flip si vytvoříme pole s klíči bez hodnot a těmito klíči profiltrujeme vstupní pole.
Kód výše by mohl být někde ve správě uživatelů, kde si uživatel chtěl změnit spolu se jménem a příjmením ještě jeho hodnocení. To jednoduše odeslal v $_POST třeba tak, že si přidal do formuláře pomocí Developer Tools další políčko. I kdyby takový sloupec v databázi opravdu existoval, do dotazu se nedostane.