У меня есть многомерный массив, который содержит переменное количество вспомогательных массивов.
Каждый поддиапазон содержит список цифровых клавиш и значений.
У меня есть отдельный массив, который является результатом функции «array_intersect_key» против многомерного массива, который содержит только ключи, существующие в каждом подматрице.Суммировать записи элементов с одинаковым идентификатором индекса в многомерном массиве?
Я хочу пройти через массив intersect_key и для каждого элемента в нем суммировать значения, связанные с соответствующими ключами внутри многомерного массива, а затем взять общее количество и использовать это, чтобы заменить значение, связанное с ключом в массиве intersect_key сохраняя один и тот же идентификатор индекса.
Ключ в каждом массиве относится к идентификатору статьи в базе данных, значение, связанное с ключом, - это количество раз, когда определенное слово появляется в этой статье. Я пытаюсь добавить все количество слов, относящихся к каждой статье, поэтому я могу их упорядочить по релевантности.
код, который создает массивы:
$arr_articles = array();
foreach($arr_words as $wordid => $word) {
$query = "SELECT articleid,wordcount FROM index_wordsearch AS iws WHERE iws.keywordid = '$wordid'";
$articlesearch = mysql_query($query);
if (!$articlesearch) {
die('Unable to search for articles matching the specified words: '.mysql_error());
} else {
$arr_ids = array();
while ($row = mysql_fetch_assoc($articlesearch)) {
$articleid = $row['articleid'];
$wordcount = $row['wordcount'];
$arr_ids["$articleid"] = "$wordcount";
}
$arr_aticles[] = $arr_ids;
}
}
$arr_matches = call_user_func_array('array_intersect_key',$arr_articles);
Я начал пытаться решить это с помощью call_user_func_array()
вызова снова расшириться к пользовательской функции, но этот подход не чувствует себя хорошо.
морозный, что не будет работать, поскольку каждый суб массив '$ arr_ids' для конкретного слова и представляет собой массив, содержащий список идентификаторов статей и соответствующих подсчетов слов для этого слова. –
Существует уже '$ arr_words', который содержит слово id и само слово, это список слов, которые пользователь искал (слово id заполнено из запроса mysql). –
О, я пропустил '$ arr_words' в строке' foreach', извините. Я удаляю это из своего ответа. Но идея '$ arr_ids [$ articleid] + = $ wordcount;' должна оставаться актуальной. –