Я пытаюсь объединить два ассоциативных массива на основе ключа entry_id
. Оба массива происходят из отдельных ресурсов базы данных, первые магазины названия входа, вторые магазины авторов входа, ключ => значение пары следующим образом:Как объединить два массива в PHP на основе общего ключа?
array (
'entry_id' => 1,
'title' => 'Test Entry'
)
array (
'entry_id' => 1,
'author_id' => 2
Я пытаюсь достичь матричную структуру, как:
array (
'entry_id' => 1,
'author_id' => 2,
'title' => 'Test Entry'
)
В настоящее время я решил проблему, процитировав каждый массив и форматируя массив так, как я хочу, но я думаю, что это немного память.
$entriesArray = array();
foreach ($entryNames as $names) {
foreach ($entryAuthors as $authors) {
if ($names['entry_id'] === $authors['entry_id']) {
$entriesArray[] = array(
'id' => $names['entry_id'],
'title' => $names['title'],
'author_id' => $authors['author_id']
);
}
}
}
Я хотел бы знать, есть ли более простой, менее интенсивный в памяти способ сделать это?
Сво сайт выражений, так что я не совсем уверен, мои SQL запросы: ВЫБРАТЬ entry_id, field_id_5 КАК title_ie ОТ exp_weblog_data ГДЕ field_id_53 = "% S" и: ВЫБРАТЬ entry_id, название, author_id FROM exp_weblog_titles WHERE entry_id IN ("% s") В каждом запросе есть четкие предложения WHERE, и мои знания SQL ограничены, могу ли я объединить оба запроса в один? –
-1 Насколько вы уверены, что «на уровне базы данных было бы намного быстрее и аккуратнее». Не думаете ли вы, что подключение к базе данных, объединение двух таблиц или более, и возвращение результата будет намного медленнее. Я настоятельно рекомендую вам читать «MySQL High Performance», чтобы получить представление о базе данных и индексировании. Присоединение к двум таблицам на уровне приложения происходит быстрее, так что гораздо больше шансов на то, что MySQL будет получать результат быстрее, потому что каждый запрос будет извлечен его быстрым быстрым ключом. Это было бы гораздо более идеальным, если вы хотите кэшировать его в веб-приложении. – ALH