2016-01-11 2 views
2

$master = ['111' => 'foo', '124' => 'bar', '133' => 'baz'];Как сделать PHP array_intersect ключами не по значениям?

$check = ['111' => 14, '133' => 23 ]';

Я хочу, чтобы удалить все ключи от $master, не существует в $check. Так что результат в данном примере должно быть:

$newMaster = ['111' => 'foo', '133' => 'baz'];

Любая идея, как это сделать? Заранее спасибо.

+2

* array_intersect клавишами * <- удалить 3-х символов (исключая пробелы :) и добавить подчеркивание к нему, и у вас есть свой ответ: 'array_intersect_key' – Rizier123

+0

Частичное простофилю: http://stackoverflow.com/q/11644267/3933332 (Просто без переворачивания второго массива) – Rizier123

+1

@ Rizier123 пять символов, чтобы быть мучительно точными ;-) – Havelock

ответ

0

Да, вы можете просто использовать:

var_dump(array_intersect_key($master, $check)); 
0
$master = ['111' => 'foo', '124' => 'bar', '133' => 'baz']; 

$check = ['111' => 14, '133' => 23 ]; 


$intersectArray = array_intersect_key($master, $check); 

Здесь ключ сравнит с помощью array_intersect_key() функции он будет сравнивать $ контрольный ключ в $ мастера и дать результат, где $ check key соответствует в $ master, и вы получили вывод ['111' => 'foo', '133' => 'baz']; в $intersectArray

Для получения более подробной информации вы будете проверять эту ссылку http://php.net/manual/en/function.array-intersect-key.php