Notatki PHP

prywatne zapiski na kamieniu

array_intersect_key - oblicza przecięcie tablic przy pomocy porównania kluczy.

array array_intersect_key ( array $tablica1 , array $tablica2 [, array $ ... ] )

array_intersect_key() zwraca tablicę zawierającą wszystkie wpisy $tablica1, które mają klucze obecne we wszystkich argumentach. 

 

 
 
$tablica1 = ['apples' => 1, 'oranges' => 2, 'turtles' => null, 'bananas'=>4];
$tablica2 = ['apples' => 2, 'turtles' => 11, 'eggs'=>12];
 
   $c = array_intersect_key($tablica1, $tablica2);
    var_dump($c);

Otrzymamy:

 
array (2)
apples => 1
turtles => null

 

Kolejny przykład 

 
$arr = array('a' => 123, 'b' => 213, 'c' => 321);
$allowed = array('b', 'c');
 
print_r(array_intersect_key($arr, array_flip($allowed))); 

Otrzymamy:

 
Array
(
    [b] => 213
    [c] => 321
)

 

Kleimy dane z tablic:

 
 
 
$defaults = [
    'id'            => 123456,
    'client_id'     => null,
    'client_secret' => null,
    'options'       => [
        'trusted' => false,
        'active'  => false
    ]
];
 
$options = [
    'client_id'       => 789,
    'client_secret'   => '5ebe2294ecd0e0f08eab7690d2a6ee69',
    'client_password' => '5f4dcc3b5aa765d61d8327deb882cf99', // ignored
    'client_name'     => 'IGNORED',                          // ignored
    'options'         => [
        'active' => true
    ]
];
 
$c = (
    array_replace_recursive($defaults,
        array_intersect_key(
            $options, $defaults
        )
    )
); 
 
    var_dump($c);

Otrzymamy:

 
array (4)
id => 123456
client_id => 789
client_secret => "5ebe2294ecd0e0f08eab7690d2a6ee69" (32)
options => array (2)
trusted => false
active => true