已编辑 我现在得到组合的item_id,但是没有单个item_id。
我有一个带有三个键的数组。
$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"
}
我想结合使用具有相同关键字/网址的选项。
只需检查关键字是否匹配。
最终格式必须是jquery自动完成功能可以接受的格式,在这里我可以将文本分配给keyword,将值分配给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的数组列中?我看到的是一个字符串,但我需要作为一个数组。
这将在PHP末尾获取JSON编码,并由jquery自动完成功能读取。
答案 0 :(得分:1)
感谢您指出字符串/数组问题。
如果存在匹配项,我就更改了如何添加至第三个键,如果没有匹配项,则解决方案是将array_push更改为just array。
$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($row['item_id'])
]);
}
}