Php 查找重复的数组,添加到原始数组,然后删除

Php 查找重复的数组,添加到原始数组,然后删除,php,arrays,function,Php,Arrays,Function,当在URL中找到重复项时,我希望: 取“分数”并将其添加到原始分数中 获取“引擎”字符串并将其附加到原始字符串 然后删除整个重复条目 最后应该是这样的: 我相信这符合你的要求 根据您提供的所需输出,您似乎希望保留每个条目的数字索引。如果实际上不需要保留这些数字,则可以删除第二个foreach循环和与$index变量相关的行,然后只返回$tmpList function reduceEntries($entries) { $tmpList = array(); $indices =

当在URL中找到重复项时,我希望:

  • 取“分数”并将其添加到原始分数中
  • 获取“引擎”字符串并将其附加到原始字符串
  • 然后删除整个重复条目
  • 最后应该是这样的:


    我相信这符合你的要求

    根据您提供的所需输出,您似乎希望保留每个条目的数字索引。如果实际上不需要保留这些数字,则可以删除第二个
    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;
    }