二维数组根据一维数组相同值拆分两个二维数组

mahuatengBC 2019-08-06 05:07:07
有这样一个二维数组
$arr = [
[
'id' => 1,
'count' => 1,
],
[
'id' => 2,
'count' => 1,
],
[
'id' => 3,
'count' => 3,
],
[
'id' => 4,
'count' => 4,
],
[
'id' => 5,
'count' => 5,
]
];


根据count 相同的放入一个数组,count 不同的放入另一个数组得到如下数组

$arr1 = [
[
'id' => 1,
'count' => 1,
],
[
'id' => 2,
'count' => 1,
]
];

$arr2 = [
[
'id' => 3,
'count' => 3,
],
[
'id' => 4,
'count' => 4,
],
[
'id' => 5,
'count' => 5,
]
];




我的代码时这样的,但是结果会有重复的
$arr1 = [];
$arr2 = [];
foreach ($arr as $k => $v){
if($arr[$k]['count'] != $arr[$k+1]['count']){
array_push($arr1, $arr[$k]);
array_push($arr1, $arr[$k+1]);

}else{
$arr2[] = $arr[$k];
}
}


然后再去重吗?
...全文
418 6 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
conqweal 2019-08-08
  • 打赏
  • 举报
回复


error_reporting(E_ALL^E_NOTICE);

 $arr = [
      [
        'id' => 1,
        'count' => 1,
      ],
      [
        'id' => 2,
        'count' => 1,
      ],
      [
        'id' => 3,
        'count' => 3,
      ],
      [
        'id' => 4,
        'count' => 4,
      ],
      [
        'id' => 5,
        'count' => 5,
      ]
    ];

$arr1;
$arr2;
array_walk($arr, function(&$v) use(&$arr1,&$arr2){
   $v['count']==1 ? $arr1[] =$v : $arr2[] =$v;
}) ;
    echo "<pre>";
print_r($arr1);
print_r($arr2);
echo "</pre>";
exit;
komyluo 2019-08-07
  • 打赏
  • 举报
回复
引用 2 楼 mahuatengBC 的回复:
[quote=引用 1 楼 komyluo 的回复:] 如果有两个count=1的,然后还有两个count=2的怎么处理呢?感觉需求不明确
这就是固定需求啊,不会有其它情况的。[/quote]
$counts = [];
foreach ($arr as $v) {
    $counts[$v['count']][] = $v;
}
$arr1 = $arr2 = [];
foreach ($counts as $v) {
	if (count($v) > 1) {
		$arr1 = array_merge($arr1, $v);
	} else {
		$arr2[] = $v[0];
	}
}
print_r($arr1);
print_r($arr2);
qq_39047451 2019-08-07
  • 打赏
  • 举报
回复
if($arr[$k]['count'] != $arr[$k+1]['count']){ 你只是和下一个对比,肯定会有重复,这个代码毫无意义 声明一个$arr 然后 $arr['count_'+count值] 类似于 $arr['count_1'] $arr['count_4'] 等等 $arr['count_1'][] = $value 然后根据函数 array_values($arr) 就能得到你最终要的结果
myyj666 2019-08-07
  • 打赏
  • 举报
回复
可以先取出所有的count值,再处理,了解一下array_count_values()函数
mahuatengBC 2019-08-07
  • 打赏
  • 举报
回复
引用 1 楼 komyluo 的回复:
如果有两个count=1的,然后还有两个count=2的怎么处理呢?感觉需求不明确
这就是固定需求啊,不会有其它情况的。
komyluo 2019-08-07
  • 打赏
  • 举报
回复
如果有两个count=1的,然后还有两个count=2的怎么处理呢?感觉需求不明确

21,893

社区成员

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

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