Панель инструментов Query Design доступна только при выполнении следующих действий:
Во-первых, я бы перевернул массив $nomal
, чтобы получить постоянное время поиска в массиве, например:
$normal = array_flip( $normal);
. Затем вам нужно отфильтровать $multidimensional_array
на $normal
с простым поиском:
$filtered = array_filter( $multidimensional_array, function( $el) use( $normal) {
return isset( $normal[ $el['member_id'] ]);
});
$normalArray = array_flip($normalArray);
$multiDimArray = array_filter($multiDimArray, function ($elem) use ($normalArray) {
return isset($normalArray[$elem['memberid']]);
});
Требуется ровно две итерации, по одному над каждым массивом. Ключевые поиски с использованием $normalArray[$elem['memberId']]
невероятно быстры. Может иметь некоторые издержки памяти из-за функционального характера и копий массивов, используйте традиционный цикл и unset
, если это проблема.
Вместо фильтрации результатов базы данных после того, как вы захотите использовать одномерный массив в самом запросе базы данных.
Мы не знаем, как выглядит запрос, который вы используете, но что-то по этим строкам сделало бы это:
// The ids from the file
$use_ids = array(131, 141, 191, 205);
// Create a list for the IN clause
$ids = '(' . implode(',', $use_ids) . ')';
// Create the query
$query = <<< SQL
SELECT time, memberid
FROM some_table
WHERE ...
AND memberid IN {$ids}
ORDER BY time
SQL;
// Execute the query, etc.
Это всегда хорошая идея, чтобы позволить SQL обрабатывать как можно большую фильтрацию содержимого.
На данный момент у нас нет доступа к ресурсам разработки, но это должно работать.
foreach($members as $member => $property) {
if (!in_array($property['member_id'], $id_array)) {
unset($members[$member]);
}
}
$id_array
- это одномерная матрица (массив), которую вы задали в своем вопросе .