doujue1246 2015-06-15 21:52
浏览 13
已采纳

将数组合并为一个更简单的数组(PHP)[关闭]

I have an array that looks like this. I'm looking at condensing this down into a simpler array (see below) how would I go about this?

array(1552) {
  [0]=>
  array(2) {
    [0]=>
    string(4) "3792"
    [1]=>
    string(2) "99"
  }
  [1]=>
  array(2) {
    [0]=>
    string(4) "3792"
    [1]=>
    string(3) "100"
  }
  [2]=>
  array(2) {
    [0]=>
    string(4) "3792"
    [1]=>
    string(3) "101"
  }
  [3]=>
  array(2) {
    [0]=>
    string(4) "3792"
    [1]=>
    string(3) "102"
  }
  [4]=>
  array(2) {
    [0]=>
    string(4) "3792"
    [1]=>
    string(3) "103"
  }
  [5]=>
  array(2) {
    [0]=>
    string(4) "3792"
    [1]=>
    string(3) "104"
  }
  [6]=>
  array(2) {
    [0]=>
    string(4) "3832"
    [1]=>
    NULL
  }
}

I would like to condense it down

array(1552) {
  [3792]=>
  array(2) {
    [0]=>
    string(4) "99"
    [1]=>
    string(2) "100"
    [2]=>
    string(2) "101"
    [3]=>
    string(2) "102"
    [3]=>
    string(2) "103"
    [3]=>
    string(2) "104"
  }
  [3832]=>
  array(2) {
    [0]=>
    NULL
  }
  • 写回答

2条回答 默认 最新

  • dsfo22654 2015-06-15 21:56
    关注

    This is a quick 'n dirty way to do it

    <?php
    $result = array();
    
    // assuming your data is named $data...
    foreach ($data as $pair) {
      if (!array_key_exists($pair[0], $result)) {
        $result[$pair[0]] = array();
      }
      $result[$pair[0]][] = $pair[1];
    }
    

    Another way would be to use array_reduce

    $data2 = array_reduce($data, function($res, $pair) {
      if (!array_key_exists($pair[0], $res)) {
        $res[$pair[0]] = array();
      }
      $res[$pair[0]][] = $pair[1];
      return $res;
    }, array());
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 素材场景中光线烘焙后灯光失效
  • ¥15 请教一下各位,为什么我这个没有实现模拟点击
  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 保护模式-系统加载-段寄存器