Как сохранить определенные ключи в массиве в PHP?

У меня есть ассоциативный массив

$preans[$id]...

который имеет много данных, связанных с $id,

Также у меня есть другой массив, который имеет

$affected_feature_ids[$id] = TRUE;

Теперь я хочу сохранить в $preans только те индексы, которые существуют в $affected_feature_ids,

Как это сделать?

0

Решение

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

$preans = array_intersect_key($preans, $affected_feature_ids);

array_intersect_key () возвращает массив, содержащий все записи в массиве array1, ключи которых присутствуют во всех аргументах.

5

Другие решения

Быстрое и не элегантное рабочее решение:

$a = []
foreach($affected_feature_ids as $key => $value) {
if ($value) $a[$key] = $preans[$key];
}
// Now $a has only the elements you wanted.
print_r($a); // <-- displays what you are asking for

Еще одно элегантное решение может быть:

$preans = array_intersect_key($preans, array_filter($affected_feature_ids));

Разница с ответом Матвея Михая в том, что он будет игнорировать $affected_feature_ids элементы где $id ложь или ноль. В вашем случае это будет только учитывать $affected_feature_ids[$id] когда это true

Теперь вы можете искать более элегантные решения!

3

По вопросам рекламы [email protected]