php 节点已经沉了,原帖 https://www.v2ex.com/t/932006
已知有两位数(变量),最小值$min ,最大值$max 。
我的原始数据例如:$min=13 ,$max=47 。
我期望得到的数据(按照 10 的倍数分块,min 值靠近 10 的倍数起跳,中途按 10 的倍数为一个阶梯,max 值不进 10 ):
[
{
"begin":13,
"end":20
},
{
"begin":21,
"end":30
},
{
"begin":31,
"end":40
},
{
"begin":41,
"end":47
}
]
--min 与 max 为任意值,min 可能<=max
1
MiaoLei911 OP js 语法解答也可以,我能看懂,其他语言就看不懂了。。
|
2
colinlikepotatos 2023-04-12 18:47:45 +08:00
<?php
$min = 23; $max = 100; $step = 10; $arr = []; $end = $min + ($step - ($min % $step)); $start = $min; do{ if($end > $max){ if($start >= $end){ $arr[] = [ "begin"=>$start, "end"=>$max, ]; } break; }else{ $arr[] = [ "begin"=>$start, "end"=>$end, ]; $start = $end + 1; $end = $start + ($step - ($start % $step)); } }while(true); echo "<pre>"; var_dump($arr); echo "</pre>"; 这个意思? |
3
seth19960929 2023-04-12 18:50:51 +08:00
这有什么逻辑吗
$min = 13; $max = 47; $nextVal = $min - ($min % 10) + 10; $result = []; while (($nextVal - 10) < $max) { $result[] = [ 'begin' => $min, 'end' => $nextVal > $max ? $max : $nextVal, ]; $min = $nextVal + 1; $nextVal += 10; } var_dump($result); |
4
MiaoLei911 OP @seth19960929 太厉害了。我就是没思路 ,感激
|
5
MiaoLei911 OP @colinlikepotatos 大哥你这个起始值和中间值对了,只是 max 不对,max 不是 10 的倍数话就还是差一条数据
|
6
0o0o0o0 2023-04-12 19:11:49 +08:00
```javascript
length = (max-max%10-min-10+min%10)/10+1 baseArr = [...Array(length).keys()] begins = baseArr.map(p=>p*10+min+10-min%10+1)) ends = baseArr.map(p=>p*10+min+10-min%10).concat([max]) res = begins.map((value,index,arr)=>{ return { begin:value,end:ends[index] } }) ``` |