首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >相同值的PHP采样

相同值的PHP采样
EN

Stack Overflow用户
提问于 2018-08-25 07:36:07
回答 1查看 64关注 0票数 0

我有一个包含数据的数组:

代码语言:javascript
复制
array(4) {
    [0]=>
        array(3) {
            ["number"]=>
            string(10) "8678664470"
            ["created_at"]=>
            string(10) "2018-08-11"
            ["title"]=>
            string(18) "Quaerat voluptatem"
        }
    [1]=>
         array(3) {
             ["number"]=>
             string(10) "8678664470"
             ["created_at"]=>
             string(10) "2018-08-11"
             ["title"]=>
             string(15) "Et dolore magna"
        }
    [2]=>
        array(3) {
            ["number"]=>
            string(10) "0535783461"
            ["created_at"]=>
            string(10) "2018-08-15"
            ["title"]=>
            string(27) "Laborious physical exercise"
        }
    [3]=>
        array(3) {
            ["number"]=>
            string(10) "0535783461"
            ["created_at"]=>
            string(10) "2018-08-15"
            ["title"]=>
            string(15) "Natus error sit"
        }
}

如何创建此数组?需要收集所有的title,其中相同的numbercreated_at

代码语言:javascript
复制
array(2) {
  [0]=>
    array(3) {
        ["number"]=>
        string(10) "8678664470"
        ["created_at"]=>
        string(10) "2018-08-11"
        ["title"]=>
            array(2) {
                [0]=>
                    string(18) "Quaerat voluptatem"
                [1]=>
                    string(15) "Et dolore magna"
            }
     }
   [1]=>
     array(3) {
         ["number"]=>
         string(10) "0535783461"
         ["created_at"]=>
         string(10) "2018-08-15"
         ["title"]=>
            array(2) {
                [0]=>
                    string(27) "Laborious physical exercise"
                [1]=>
                    string(15) "Natus error sit"
            }
    }
 }
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-08-25 08:08:49

这是一种使用关联数组来累积已见条目的标题的方法。这在一次传递中完成(线性时间复杂度):

代码语言:javascript
复制
function mergeTitles($data) {
    $result = [];

    foreach ($data as $e) {
        $key = $e['number'] . "&" . $e['created_at'];

        if (!array_key_exists($key, $result)) {
            $result[$key] = $e;
            $result[$key]['title'] = [];
        }

        $result[$key]['title'][] = $e['title'];
    }

    return array_values($result);
}

输出:

代码语言:javascript
复制
array(2) {
  [0]=>
  array(3) {
    ["number"]=>
    string(10) "8678664470"
    ["created_at"]=>
    string(10) "2018-08-11"
    ["title"]=>
    array(2) {
      [0]=>
      string(18) "Quaerat voluptatem"
      [1]=>
      string(15) "Et dolore magna"
    }
  }
  [1]=>
  array(3) {
    ["number"]=>
    string(10) "0535783461"
    ["created_at"]=>
    string(10) "2018-08-15"
    ["title"]=>
    array(2) {
      [0]=>
      string(27) "Laborious physical exercise"
      [1]=>
      string(15) "Natus error sit"
    }
  }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52012857

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档