$arr = [
['num' => -1],
['num' => 1],
['num' => 2],
['num' => 3],
['num' => 8],
['num' => 9],
['num' => 10],
['num' => 11],
['num' => 20],
['num' => 21],
['num' => 22],
['num' => 25],
['num' => 30],
['num' => 31],
['num' => 32],
['num' => 100],
];
现在的要求是,如果数组中num值相减大于1的话,就给它分割成一个新的数组,处理成这样:
$arr = [
[
['num' => -1],
],
[
['num' => 1],
['num' => 2],
['num' => 3],
],
[
['num' => 8],
['num' => 9],
['num' => 10],
['num' => 11],
],
[
['num' => 20],
['num' => 21],
['num' => 22],
],
[
['num' => 25]
],
[
['num' => 30],
['num' => 31],
['num' => 32],
],
[
['num' => 100],
]
];
想请教下,用PHP该怎么处理?
1 回答
![?](http://img1.sycdn.imooc.com/545865890001495702200220-100-100.jpg)
慕桂英3389331
TA贡献2036条经验 获得超8个赞
至少for循环还是能想到..
function continuous($arr, $field = "num")
{
$result = [];
$temp = [
$arr[0],
];
for ($i = 1; $i < count($arr); $i++) {
$prev = $arr[$i - 1][$field];
$now = $arr[$i][$field];
if ($now - $prev == 1) {
$temp[] = $arr[$i];
} else {
if ($temp) {
$result[] = $temp;
}
$temp = [$arr[$i]];
}
}
if(!empty($temp)) {
$result[] = $temp;
}
return $result;
}
- 1 回答
- 0 关注
- 409 浏览
添加回答
举报
0/150
提交
取消