数组合并

90至尊皇朝 2017-11-20 04:03:59
将数组

$arr = array(
array(
"class" => "A",
"name" => "xiaoming,xiaohong",
),
array(
"class" => "B",
"name" => "xiaohua,xiaogou",
),
array(
"class" => "A",
"name" => "xiaoming,xiaocai",
),
);

合并成如下形式(相同项要去掉)

$arr = array(
array(
"class" => "A",
"name" => "xiaoming,xiaohong,xiaocai",
),
array(
"class" => "B",
"name" => "xiaohua,xiaogou",
),
);
...全文
146 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
90至尊皇朝 2017-11-21
  • 打赏
  • 举报
回复
我自己 遍历 得 foreach两遍;目的就是为了减少循环,脑子是个好东西,我在补脑,感谢
xuzuning 2017-11-20
  • 打赏
  • 举报
回复
总要自己动动脑子的吧?
$arr = array(
            array(
                 "class" => "A",
                "name" => "xiaoming,xiaohong",                
            ),
           array(
                 "class" => "B",
                "name" => "xiaohua,xiaogou",                
            ),
            array(
                 "class" => "A",
                "name" => "xiaoming,xiaocai",                
            ),
        );

foreach($arr as $i=>$v) {
  $k = $v['class'];
  if(! isset($arr[$k])) $arr[$k] = $v['name'];
  else $arr[$k] = join(',', array_unique (explode(',', $arr[$k] . ",$v[name]")));
  unset($arr[$i]);
}
var_export($arr);

array (
  'A' => 'xiaoming,xiaohong,xiaocai',
  'B' => 'xiaohua,xiaogou',
)
90至尊皇朝 2017-11-20
  • 打赏
  • 举报
回复

           _ooOoo_
                  o8888888o
                  88" . "88
                  (| -_- |)
                  O\  =  /O
               ____/`---'\____
             .'  \\|     |//  `.
            /  \\|||  :  |||//  \
           /  _||||| -:- |||||-  \
           |   | \\\  -  /// |   |
           | \_|  ''\---/''  |   |
           \  .-\__  `-`  ___/-. /
         ___`. .'  /--.--\  `. . __
      ."" '<  `.___\_<|>_/___.'  >'"".
     | | :  ` - `.;`\ _ /`;.`/ - ` : | |
     \  \ `-.   \_ __\ /__ _/   .-` /  /
======`-.____`-.___\_____/___.-`____.-'======
                   `=---='
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
            佛祖保佑       永无BUG
Sunshine白衬衫 2017-11-20
  • 打赏
  • 举报
回复
虽让不知道怎么写,但帮顶一下
引用 1 楼 xuzuning 的回复:
$arr = array(
            array(
                 "class" => "A",
                "name" => "xiaoming,xiaohong",                
            ),
           array(
                 "class" => "B",
                "name" => "xiaohua,xiaogou",                
            ),
            array(
                 "class" => "A",
                "name" => "xiaoming,xiaocai",                
            ),
        );

foreach($arr as $i=>$v) {
  $k = $v['class'];
  if(! isset($arr[$k])) $arr[$k] = $v;
  else $arr[$k]['name'] = join(',', array_unique (explode(',', $arr[$k]['name'] . ",$v[name]")));
  unset($arr[$i]);
}
var_export($arr);

array (
  'A' => 
  array (
    'class' => 'A',
    'name' => 'xiaoming,xiaohong,xiaocai',
  ),
  'B' => 
  array (
    'class' => 'B',
    'name' => 'xiaohua,xiaogou',
  ),
)
90至尊皇朝 2017-11-20
  • 打赏
  • 举报
回复
那若是组装成这样的呢

$arr = array(
            "A" => "xiaoming,xiaohong,xiaocai",
            "B" => "xiaohua,xiaogou",      
        );
怎么组装
xuzuning 2017-11-20
  • 打赏
  • 举报
回复
$arr = array(
            array(
                 "class" => "A",
                "name" => "xiaoming,xiaohong",                
            ),
           array(
                 "class" => "B",
                "name" => "xiaohua,xiaogou",                
            ),
            array(
                 "class" => "A",
                "name" => "xiaoming,xiaocai",                
            ),
        );

foreach($arr as $i=>$v) {
  $k = $v['class'];
  if(! isset($arr[$k])) $arr[$k] = $v;
  else $arr[$k]['name'] = join(',', array_unique (explode(',', $arr[$k]['name'] . ",$v[name]")));
  unset($arr[$i]);
}
var_export($arr);

array (
  'A' => 
  array (
    'class' => 'A',
    'name' => 'xiaoming,xiaohong,xiaocai',
  ),
  'B' => 
  array (
    'class' => 'B',
    'name' => 'xiaohua,xiaogou',
  ),
)

21,886

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧