Отредактировано Теперь я получаю комбинированные item_ids, но не единичные item_ids.
У меня есть массив с тремя ключами.
$searchArray = {
[0]=> array(3) {
["keyword"]=> string(7) "history"
["url"]=> string(7) "history"
["item_id"]=> string(2) "16"
}
[1]=> array(3) {
["keyword"]=> string(4) "past"
["url"]=> string(4) "past"
["item_id"]=> string(2) "16"
}
[89]=> array(3) {
["keyword"]=> string(10) "biomedical"
["url"]=> string(10) "biomedical"
["item_id"]=> string(2) "34"
}
[93]=> array(3) {
["keyword"]=> string(10) "biomedical"
["url"]=> string(10) "biomedical"
["item_id"]=> string(2) "35"
}
Я хочу объединить параметры, которые имеют одно и то же ключевое слово / URL.
Просто нужно проверить, соответствует ли ключевое слово,
Окончательный формат должен быть таким, который может принять автозаполнение jquery, где я могу назначить текст ключевому слову и значение url, id - item_id.
До этого в массиве было только два ключа, и я хотел бы комбинировать совпадения следующим образом.
foreach ($searchArray as $row)
{
$combineMatches[ $row['keyword'] ][] = $row['item_id'];
}
результат после использования json_encode()
:
"anthropologist":["27","37"],
"biomedical":["34","35"],
"m.s.":["18","19","23"]
Что яв настоящее время есть:
$combineMatches = array();
foreach ($searchArray as $row)
{
$match =
array_search($row['keyword'],array_column($combineMatches,'keyword'));
if($match){
$combineMatches[$match]['item_id']+= $row['item_id'];
}else{
array_push($combineMatches, [
'keyword' => $row['keyword'],
'url' => $row['url'],
'item_id' => array_push($row['item_id'])
]);
}
}
Результат:
[7]=> array(3)
{
["keyword"]=> string(8) "theology"
["url"]=> string(8) "theology"
["item_id"]=> NULL
}
[13]=> array(3)
{
["keyword"]=> string(7) "writing"
["url"]=> string(7) "writing"
["item_id"]=> NULL
}
Как добавить в столбец массива просто item_id?То, что я вижу, является строкой, но мне нужно, как массив.
Это кодирует JSON в конце PHP и читает с помощью автозаполнения jquery.