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