Php 查找重复的数组,添加到原始数组,然后删除
当在URL中找到重复项时,我希望:Php 查找重复的数组,添加到原始数组,然后删除,php,arrays,function,Php,Arrays,Function,当在URL中找到重复项时,我希望: 取“分数”并将其添加到原始分数中 获取“引擎”字符串并将其附加到原始字符串 然后删除整个重复条目 最后应该是这样的: 我相信这符合你的要求 根据您提供的所需输出,您似乎希望保留每个条目的数字索引。如果实际上不需要保留这些数字,则可以删除第二个foreach循环和与$index变量相关的行,然后只返回$tmpList function reduceEntries($entries) { $tmpList = array(); $indices =
我相信这符合你的要求 根据您提供的所需输出,您似乎希望保留每个条目的数字索引。如果实际上不需要保留这些数字,则可以删除第二个
foreach
循环和与$index
变量相关的行,然后只返回$tmpList
function reduceEntries($entries)
{
$tmpList = array();
$indices = array();
foreach ($entries as $i => $entry) {
if (isset($tmpList[$entry['url']])) {
$tmpList[$entry['url']]['score'] += $entry['score'];
$tmpList[$entry['url']]['engine'] .= ', ' . $entry['engine'];
} else {
$tmpList[$entry['url']] = $entry;
$indices[$entry['url']] = $i;
}
}
// rebuild final array with indices
$finalList = array();
foreach ($tmpList as $url => $entry) {
$finalList[$indices[$url]] = $entry;
}
return $finalList;
}
(这是在代码板上。)什么都不想做却失败了?我已经为此工作了几个小时。我将包括我的代码片段,但它可能没有帮助。我会随时更新我的进度。没必要大惊小怪。谢谢,你可能会感到惊讶。也许您的代码很接近,但有人可能会发现一个细微的错误。如果是这样的话,这将节省时间。不管怎样,这将表明你做出了真正的尝试。另外,这是一个非常明确的问题。对此表示抱歉。我已经尝试了很多事情,并且在进行过程中删除/评论。我完全被卡住了。我会记下未来。谢谢你的帮助,不用担心。我只是想让你知道,尽管有一些批评,你还是有一个好问题。
array
0 =>
array
'url' => string 'http://blahhotel.com/'
'score' => int 2
'engine' => string 'cheese, pie'
1 =>
array
'url' => string 'http://www.blahdvd.com/'
'score' => int 2
'engine' => string 'cheese'
3 =>
array
'url' => string 'http://dictionary.reference.com/browse/blah'
'score' => int 3
'engine' => string 'pie, apples'
function reduceEntries($entries)
{
$tmpList = array();
$indices = array();
foreach ($entries as $i => $entry) {
if (isset($tmpList[$entry['url']])) {
$tmpList[$entry['url']]['score'] += $entry['score'];
$tmpList[$entry['url']]['engine'] .= ', ' . $entry['engine'];
} else {
$tmpList[$entry['url']] = $entry;
$indices[$entry['url']] = $i;
}
}
// rebuild final array with indices
$finalList = array();
foreach ($tmpList as $url => $entry) {
$finalList[$indices[$url]] = $entry;
}
return $finalList;
}