У меня есть массив:
$array = array(
'key1' => 'value1',
'key2' => 'value2',
'key3' => 'value3',
'key4' => 'value4',
'key5' => 'value5',
);
и я хотел бы получить часть его с указанными ключами - например, key2, key4, key5
.
Ожидаемый результат:
$result = array(
'key2' => 'value2',
'key4' => 'value4',
'key5' => 'value5',
);
Что самый быстрый путь состоит в том, чтобы сделать это?
Вам нужна функция array_intersect_key
:
$result = array_intersect_key($array, array('key2'=>1, 'key4'=>1, 'key5'=>1));
Также array_flip
может помочь, если ваши ключи находятся в массиве в виде значений:
$result = array_intersect_key(
$array,
array_flip(array('key2', 'key4', 'key5'))
);
Вы можете использовать array_intersect_key
и array_fill_keys
для этого:
$keys = array('key2', 'key4', 'key5');
$result = array_intersect_key($array, array_fill_keys($keys, null));
array_flip
вместо Array_fill_keys
также будет работать:
$keys = array('key2', 'key4', 'key5');
$result = array_intersect_key($array, array_flip($keys));
Единственный способ, который я вижу - это итерация массива и построение нового массива.
Либо пройдитесь по массиву с помощью array_walk и сконструируйте новый, либо создайте соответствующий массив и используйте array_intersect_key и др.
.