У меня есть ассоциативный массив
$preans[$id]...
который имеет много данных, связанных с $id
,
Также у меня есть другой массив, который имеет
$affected_feature_ids[$id] = TRUE;
Теперь я хочу сохранить в $preans
только те индексы, которые существуют в $affected_feature_ids
,
Как это сделать?
Вы можете просто использовать array_intersect_key:
$preans = array_intersect_key($preans, $affected_feature_ids);
array_intersect_key () возвращает массив, содержащий все записи в массиве array1, ключи которых присутствуют во всех аргументах.
Быстрое и не элегантное рабочее решение:
$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
Теперь вы можете искать более элегантные решения!