如何将二维数组按年份和月份分组成新的数组?
- 内容介绍
- 文章标签
- 相关推荐
本文共计956个文字,预计阅读时间需要4分钟。
要实现的效果:生成一个数组,包含2023年的每个月份,每个月份包含一个包含id、billdtimes、month、price、years、wuyeId、communityId、unitNumber、buildingId和ro的数组。
简化后的代码如下:
pythonresult=[]for month in range(1, 13): result.append([ {'billdtimes': 1672502400, 'month': month, 'price': 8.00, 'years': 2023, 'wuyeId': 1, 'communityId': 3, 'unitNumber': 2, 'buildingId': 1, 'ro': 'ro'} ])
要实现的效果:
Array
(
[2023---年份] => Array
(
[1--月份:] => Array
(
[0] => Array
(
[id] => 28
[billdtimes] => 1672502400
[month] => 1
[price] => 8.00
[years] => 2023
[wuyeId] => 1
[communityId] => 3
[unitNumber] => 2
[buildingId] => 1
[roomNumber] => 302
[billStartime] => 1672502400
[billEndtime] => 1675094400
)
[1] => Array
(
[id] => 31
[billdtimes] => 1672502400
[month] => 1
[price] => 3.00
[years] => 2023
[wuyeId] => 1
[communityId] => 3
[unitNumber] => 2
[buildingId] => 1
[roomNumber] => 302
[billStartime] => 1672502400
[billEndtime] => 1675094400
)
)
[2] => Array
(
[0] => Array
(
[id] => 29
[billdtimes] => 1675180800
[month] => 2
[price] => 8.00
[years] => 2023
[wuyeId] => 1
[communityId] => 3
[unitNumber] => 2
[buildingId] => 1
[roomNumber] => 302
[billStartime] => 1675180800
[billEndtime] => 1677513600
)
)
[3] => Array
(
[0] => Array
(
[id] => 30
[billdtimes] => 1677600000
[month] => 3
[price] => 8.00
[years] => 2023
[wuyeId] => 1
[communityId] => 3
[unitNumber] => 2
[buildingId] => 1
[roomNumber] => 302
[billStartime] => 1677600000
[billEndtime] => 1680192000
)
)
[4] => Array
(
[0] => Array
(
[id] => 6
[billdtimes] => 1680313031
[month] => 4
[price] => 6.00
[years] => 2023
[wuyeId] => 1
[communityId] => 3
[unitNumber] => 2
[buildingId] => 1
[roomNumber] => 302
[billStartime] => 0
[billEndtime] => 0
)
[1] => Array
(
[id] => 7
[billdtimes] => 1680313031
[month] => 4
[price] => 1.00
[years] => 2023
[wuyeId] => 1
[communityId] => 3
[unitNumber] => 2
[buildingId] => 1
[roomNumber] => 302
[billStartime] => 0
[billEndtime] => 0
)
[2] => Array
(
[id] => 8
[billdtimes] => 1680313031
[month] => 4
[price] => 2.00
[years] => 2023
[wuyeId] => 1
[communityId] => 3
[unitNumber] => 2
[buildingId] => 1
[roomNumber] => 302
[billStartime] => 0
[billEndtime] => 0
)
)
)
[2022] => Array
(
[12] => Array
(
[0] => Array
(
[id] => 11
[billdtimes] => 1669859617
[month] => 12
[price] => 6.00
[years] => 2022
[wuyeId] => 1
[communityId] => 3
[unitNumber] => 2
[buildingId] => 1
[roomNumber] => 302
[billStartime] => 1669859617
[billEndtime] => 1672365217
)
)
)
)
select代码数据
Array
(
[0] => Array
(
[id] => 28
[billdtimes] => 1672502400
[month] => 1
[price] => 8.00
[years] => 2023
[wuyeId] => 1
[communityId] => 3
[unitNumber] => 2
[buildingId] => 1
[roomNumber] => 302
[billStartime] => 1672502400
[billEndtime] => 1675094400
)
[1] => Array
(
[id] => 31
[billdtimes] => 1672502400
[month] => 1
[price] => 3.00
[years] => 2023
[wuyeId] => 1
[communityId] => 3
[unitNumber] => 2
[buildingId] => 1
[roomNumber] => 302
[billStartime] => 1672502400
[billEndtime] => 1675094400
)
[2] => Array
(
[id] => 29
[billdtimes] => 1675180800
[month] => 2
[price] => 8.00
[years] => 2023
[wuyeId] => 1
[communityId] => 3
[unitNumber] => 2
[buildingId] => 1
[roomNumber] => 302
[billStartime] => 1675180800
[billEndtime] => 1677513600
)
[3] => Array
(
[id] => 30
[billdtimes] => 1677600000
[month] => 3
[price] => 8.00
[years] => 2023
[wuyeId] => 1
[communityId] => 3
[unitNumber] => 2
[buildingId] => 1
[roomNumber] => 302
[billStartime] => 1677600000
[billEndtime] => 1680192000
)
[4] => Array
(
[id] => 6
[billdtimes] => 1680313031
[month] => 4
[price] => 6.00
[years] => 2023
[wuyeId] => 1
[communityId] => 3
[unitNumber] => 2
[buildingId] => 1
[roomNumber] => 302
[billStartime] => 0
[billEndtime] => 0
)
[5] => Array
(
[id] => 7
[billdtimes] => 1680313031
[month] => 4
[price] => 1.00
[years] => 2023
[wuyeId] => 1
[communityId] => 3
[unitNumber] => 2
[buildingId] => 1
[roomNumber] => 302
[billStartime] => 0
[billEndtime] => 0
)
[6] => Array
(
[id] => 8
[billdtimes] => 1680313031
[month] => 4
[price] => 2.00
[years] => 2023
[wuyeId] => 1
[communityId] => 3
[unitNumber] => 2
[buildingId] => 1
[roomNumber] => 302
[billStartime] => 0
[billEndtime] => 0
)
[7] => Array
(
[id] => 11
[billdtimes] => 1669859617
[month] => 12
[price] => 6.00
[years] => 2022
[wuyeId] => 1
[communityId] => 3
[unitNumber] => 2
[buildingId] => 1
[roomNumber] => 302
[billStartime] => 1669859617
[billEndtime] => 1672365217
)
)
实现代码:
sonlist 查询的元数据 使用&引用方法实现
// 创建基于主键的数组引用
$refer = array();
foreach ($sonlist as $key => $data) {
$refer[$data["years"]][$data["month"]][] = &$sonlist[$key];
}
public function getFormatMenus($map = [], $field = '*')
{
$list = $this->field($field)->where($map)->select()->order('sort asc')->toArray();
return $list ? $list : [];
}
public function listToTree(array $list)
{
$tree = array();
$pk = 'id';
$pid = 'pid';
$root = 0;
$child = 'children';
if (is_array($list)) {
// 创建基于主键的数组引用
$refer = array();
foreach ($list as $key => $data) {
$refer[$data[$pk]] = &$list[$key];
}
foreach ($list as $key => $data) {
// 判断是否存在parent
$parentId = $data[$pid];
if ($root == $parentId) {
$tree[] = &$list[$key];
} else {
if (isset($refer[$parentId])) {
$parent = &$refer[$parentId];
$parent['childs'][] = $data['id'];
$parent[$child][] = &$list[$key];
}
}
}
}
return $tree;
}
本文共计956个文字,预计阅读时间需要4分钟。
要实现的效果:生成一个数组,包含2023年的每个月份,每个月份包含一个包含id、billdtimes、month、price、years、wuyeId、communityId、unitNumber、buildingId和ro的数组。
简化后的代码如下:
pythonresult=[]for month in range(1, 13): result.append([ {'billdtimes': 1672502400, 'month': month, 'price': 8.00, 'years': 2023, 'wuyeId': 1, 'communityId': 3, 'unitNumber': 2, 'buildingId': 1, 'ro': 'ro'} ])
要实现的效果:
Array
(
[2023---年份] => Array
(
[1--月份:] => Array
(
[0] => Array
(
[id] => 28
[billdtimes] => 1672502400
[month] => 1
[price] => 8.00
[years] => 2023
[wuyeId] => 1
[communityId] => 3
[unitNumber] => 2
[buildingId] => 1
[roomNumber] => 302
[billStartime] => 1672502400
[billEndtime] => 1675094400
)
[1] => Array
(
[id] => 31
[billdtimes] => 1672502400
[month] => 1
[price] => 3.00
[years] => 2023
[wuyeId] => 1
[communityId] => 3
[unitNumber] => 2
[buildingId] => 1
[roomNumber] => 302
[billStartime] => 1672502400
[billEndtime] => 1675094400
)
)
[2] => Array
(
[0] => Array
(
[id] => 29
[billdtimes] => 1675180800
[month] => 2
[price] => 8.00
[years] => 2023
[wuyeId] => 1
[communityId] => 3
[unitNumber] => 2
[buildingId] => 1
[roomNumber] => 302
[billStartime] => 1675180800
[billEndtime] => 1677513600
)
)
[3] => Array
(
[0] => Array
(
[id] => 30
[billdtimes] => 1677600000
[month] => 3
[price] => 8.00
[years] => 2023
[wuyeId] => 1
[communityId] => 3
[unitNumber] => 2
[buildingId] => 1
[roomNumber] => 302
[billStartime] => 1677600000
[billEndtime] => 1680192000
)
)
[4] => Array
(
[0] => Array
(
[id] => 6
[billdtimes] => 1680313031
[month] => 4
[price] => 6.00
[years] => 2023
[wuyeId] => 1
[communityId] => 3
[unitNumber] => 2
[buildingId] => 1
[roomNumber] => 302
[billStartime] => 0
[billEndtime] => 0
)
[1] => Array
(
[id] => 7
[billdtimes] => 1680313031
[month] => 4
[price] => 1.00
[years] => 2023
[wuyeId] => 1
[communityId] => 3
[unitNumber] => 2
[buildingId] => 1
[roomNumber] => 302
[billStartime] => 0
[billEndtime] => 0
)
[2] => Array
(
[id] => 8
[billdtimes] => 1680313031
[month] => 4
[price] => 2.00
[years] => 2023
[wuyeId] => 1
[communityId] => 3
[unitNumber] => 2
[buildingId] => 1
[roomNumber] => 302
[billStartime] => 0
[billEndtime] => 0
)
)
)
[2022] => Array
(
[12] => Array
(
[0] => Array
(
[id] => 11
[billdtimes] => 1669859617
[month] => 12
[price] => 6.00
[years] => 2022
[wuyeId] => 1
[communityId] => 3
[unitNumber] => 2
[buildingId] => 1
[roomNumber] => 302
[billStartime] => 1669859617
[billEndtime] => 1672365217
)
)
)
)
select代码数据
Array
(
[0] => Array
(
[id] => 28
[billdtimes] => 1672502400
[month] => 1
[price] => 8.00
[years] => 2023
[wuyeId] => 1
[communityId] => 3
[unitNumber] => 2
[buildingId] => 1
[roomNumber] => 302
[billStartime] => 1672502400
[billEndtime] => 1675094400
)
[1] => Array
(
[id] => 31
[billdtimes] => 1672502400
[month] => 1
[price] => 3.00
[years] => 2023
[wuyeId] => 1
[communityId] => 3
[unitNumber] => 2
[buildingId] => 1
[roomNumber] => 302
[billStartime] => 1672502400
[billEndtime] => 1675094400
)
[2] => Array
(
[id] => 29
[billdtimes] => 1675180800
[month] => 2
[price] => 8.00
[years] => 2023
[wuyeId] => 1
[communityId] => 3
[unitNumber] => 2
[buildingId] => 1
[roomNumber] => 302
[billStartime] => 1675180800
[billEndtime] => 1677513600
)
[3] => Array
(
[id] => 30
[billdtimes] => 1677600000
[month] => 3
[price] => 8.00
[years] => 2023
[wuyeId] => 1
[communityId] => 3
[unitNumber] => 2
[buildingId] => 1
[roomNumber] => 302
[billStartime] => 1677600000
[billEndtime] => 1680192000
)
[4] => Array
(
[id] => 6
[billdtimes] => 1680313031
[month] => 4
[price] => 6.00
[years] => 2023
[wuyeId] => 1
[communityId] => 3
[unitNumber] => 2
[buildingId] => 1
[roomNumber] => 302
[billStartime] => 0
[billEndtime] => 0
)
[5] => Array
(
[id] => 7
[billdtimes] => 1680313031
[month] => 4
[price] => 1.00
[years] => 2023
[wuyeId] => 1
[communityId] => 3
[unitNumber] => 2
[buildingId] => 1
[roomNumber] => 302
[billStartime] => 0
[billEndtime] => 0
)
[6] => Array
(
[id] => 8
[billdtimes] => 1680313031
[month] => 4
[price] => 2.00
[years] => 2023
[wuyeId] => 1
[communityId] => 3
[unitNumber] => 2
[buildingId] => 1
[roomNumber] => 302
[billStartime] => 0
[billEndtime] => 0
)
[7] => Array
(
[id] => 11
[billdtimes] => 1669859617
[month] => 12
[price] => 6.00
[years] => 2022
[wuyeId] => 1
[communityId] => 3
[unitNumber] => 2
[buildingId] => 1
[roomNumber] => 302
[billStartime] => 1669859617
[billEndtime] => 1672365217
)
)
实现代码:
sonlist 查询的元数据 使用&引用方法实现
// 创建基于主键的数组引用
$refer = array();
foreach ($sonlist as $key => $data) {
$refer[$data["years"]][$data["month"]][] = &$sonlist[$key];
}
public function getFormatMenus($map = [], $field = '*')
{
$list = $this->field($field)->where($map)->select()->order('sort asc')->toArray();
return $list ? $list : [];
}
public function listToTree(array $list)
{
$tree = array();
$pk = 'id';
$pid = 'pid';
$root = 0;
$child = 'children';
if (is_array($list)) {
// 创建基于主键的数组引用
$refer = array();
foreach ($list as $key => $data) {
$refer[$data[$pk]] = &$list[$key];
}
foreach ($list as $key => $data) {
// 判断是否存在parent
$parentId = $data[$pid];
if ($root == $parentId) {
$tree[] = &$list[$key];
} else {
if (isset($refer[$parentId])) {
$parent = &$refer[$parentId];
$parent['childs'][] = $data['id'];
$parent[$child][] = &$list[$key];
}
}
}
}
return $tree;
}

