二维数组根据某个固定的值相同而划分为一个数组内

本文介绍了一种在PHP中对二维数组进行分组的有效方法。通过遍历原始数组并根据特定键值对数组进行分组,可以高效地组织数据。此外,还提供了一种将二维对象转换为数组的方法。
$newArray = array();
 $data = [
            ['a'=>1,'b'=>2],
            ['a'=>1,'b'=>3],
            ['a'=>2,'b'=>'a'],
            ['a'=>2,'b'=>'b']
        ];

foreach($data as $key=>$v){
    $newArray[$v['a']][]=$v;
}
    dump($newArray);

原理是什么呢?就是当循环这个二维数组的时候当a=1的时候
它会自动添加到neearray中key=1的数组中。一次类推都会根据a的值相同而添加到新数组key
和他们一样的数组中。

题外话:
二维对象转数组
当$data为二维对象转数组时,网上查了很多长串的处理根本没效果,最后使用的是下面这种:
先转为json在转为数组。当单使用json_decode(json)没效果的时候,可在其后面添加第二个参数为true;
$data = json_decode(json_encode($data),true);





                
在 JavaScript 中,将一维数组根据某个字段划分二维数组可以通过以下方法实现。假设有一个一维数组数组中的每个元素一个对象,需要根据对象的某个字段将这些元素分组到不同的子数组中。 以下是一个通用的实现方式: ```javascript function groupByField(arr, field) { const result = {}; arr.forEach(item => { const key = item[field]; if (!result[key]) { result[key] = []; } result[key].push(item); }); return Object.values(result); } // 示例数据 const array = [ { 'student_name': '张三', 'late_count': 3, 'week': '周一' }, { 'student_name': '李四', 'late_count': 1, 'week': '周一' }, { 'student_name': '刘六', 'late_count': 2, 'week': '周二' }, { 'student_name': '张三', 'late_count': 1, 'week': '周二' }, { 'student_name': '李四', 'late_count': 1, 'week': '周三' }, { 'student_name': '王五', 'late_count': 2, 'week': '周四' }, { 'student_name': '李四', 'late_count': 1, 'week': '周四' }, { 'student_name': '朱七', 'late_count': 2, 'week': '周四' }, { 'student_name': '闫八', 'late_count': 2, 'week': '周五' }, { 'student_name': '王五', 'late_count': 1, 'week': '周五' } ]; const groupedArray = groupByField(array, 'week'); console.log(groupedArray); ``` 上述代码定义了一个 `groupByField` 函数,该函数接收两个参数:一个一维数组 `arr` 和一个字段名 `field`。函数内部使用一个对象 `result` 来存储分组结果,遍历数组中的每个元素根据指定字段的作为键,如果该键不存在,则创建一个新的数组;然后将元素添加到对应的数组中。最后,使用 `Object.values` 方法将对象换为一个二维数组返回。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值