douji1999 2018-10-11 06:39
浏览 24
已采纳

php多维数组唯一具有不同值的make键值数组

i need help for Below Array:

$inputarray = array(
    array("id" => 2,"name" => "ProductName","comment" => "best product comment 1"),
    array("id" => 2,"name" => "ProductName","comment" => "best product comment 2"),
    array("id" => 2,"name" => "ProductName","comment" => "best product comment 3")
);

output should be:

$outputarray = array(
    array("id" => 2,"name" => "ProductName","comment" => array("best product comment 1","best product comment 2","best product comment 3"))
);

i need this "comment" key of value array in return

array_unique

is not working in it. it gives me unique but not that comments array. it's only give me last value of comment key value like below

$outputarray = array(
    array("id" => 2,"name" => "ProductName","comment" => "best product comment 3")
);

please help me out.

  • 写回答

2条回答 默认 最新

  • dthtvk3666 2018-10-11 06:50
    关注

    You can make use of array_reduce:

    <?php
    $input_array = [
      ['id' => 2, 'name' => 'ProductName', 'comment' => 'best product comment 1'],
      ['id' => 2, 'name' => 'ProductName', 'comment' => 'best product comment 2'],
      ['id' => 2, 'name' => 'ProductName', 'comment' => 'best product comment 3'],
      ['id' => 3, 'name' => 'ProductName2', 'comment' => 'best product comment 4'],
      ['id' => 3, 'name' => 'ProductName2', 'comment' => 'best product comment 5']
    ];
    
    $output_array = array_values(array_reduce($input_array, function($output_array, $item) {
      if (array_key_exists($item['id'], $output_array)) {
        $output_array[$item['id']]['comment'][] = $item['comment'];
      }
      else {
        $item['comment'] = (array)$item['comment'];
        $output_array[$item['id']] = $item;
      }
      return $output_array;
    }, []));
    
    echo '<pre>'; var_dump($output_array); echo '</pre>';
    

    Demo

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥100 连续两帧图像高速减法
  • ¥15 组策略中的计算机配置策略无法下发
  • ¥15 如何绘制动力学系统的相图
  • ¥15 对接wps接口实现获取元数据
  • ¥20 给自己本科IT专业毕业的妹m找个实习工作
  • ¥15 用友U8:向一个无法连接的网络尝试了一个套接字操作,如何解决?
  • ¥30 我的代码按理说完成了模型的搭建、训练、验证测试等工作(标签-网络|关键词-变化检测)
  • ¥50 mac mini外接显示器 画质字体模糊
  • ¥15 TLS1.2协议通信解密
  • ¥40 图书信息管理系统程序编写