PHP - array_intersect_key
Třída
Metoda - array_intersect_key
(PHP 5 >= 5.1.0, PHP 7)
Funkce vrátí asociativní pole, jehož klíče jsou průnikem klíčů zadaných polí. Hodnoty klíčů jsou převzaty z prvního zadaného pole. Tato funkce se používá např. zkopírování dat z $_POST.
Procedurální
- function array_intersect_key (array $array1, array $array2, array $...) : array
Parametry
Název | Datový typ | Výchozí hodnota | Popis |
---|---|---|---|
$array1 | array | Pole, jehož klíče se mají zkontrolovat a jehož hodnoty budou obsaženy ve výsledném poli. | |
$array2 | array | Pole, oproti kterému se bude dělat průnik klíčů. | |
$... | array | Lze zadat libovolný počet polí, vůči kterým se budou klíče z prvního pole porovnávat jejich průnikem. Klíče z prvního pole pak musí být obsaženy ve všech zadaných polích. |
Návratové hodnoty
Vrací: array
Vyfiltrované pole, jehož klíče jsou obsaženy ve všech zadaných polích.
Příklady
Ukažme si, jak lze funkci využít pro 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);
Pomocí array_flip()
prohodíme klíče a hodnoty pole, čímž
dostaneme pole klíčů.
Pole v ukázce by se mohlo objevit např. 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, díky array_intersect_key
se
do dotazu se nedostane.
Související manuály
- function array_diff_key (array $array1, array $array2, array $...) : array
- function array_intersect (array $array1, array $array2, array $...) : array