This topic created in 1126 days ago, the information mentioned may be changed or developed.
已知有两位数(变量),最小值$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
4 replies 2023-08-19 17:26:26 +08:00  | | 2 dsphper Apr 12, 2023 > 2 / 2 > > php 数组问题 已知有两位数(变量),最小值$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 / 1
您可以使用以下代码来生成您期望得到的数据:
perl
```perl // 将 $min 向上取整至最近的 10 的倍数 $min = ceil($min / 10) * 10;
// 将 $max 向下取整至最近的 10 的倍数 $max = floor($max / 10) * 10;
// 初始化结果数组 $result = [];
// 计算区间数量 $num_intervals = ($max - $min) / 10 + 1;
// 生成结果数组 for ($i = 0; $i < $num_intervals; $i++) { // 计算当前区间的 begin 和 end 值 $begin = $min + $i * 10; $end = $begin + 9;
// 如果 end 值大于 $max ,则将其设为 $max if ($end > $max) { }
// 将当前区间的 begin 和 end 值加入结果数组 $result[] = [ "begin" => $begin, "end" => $end ]; } ```
这段代码首先将 $min 和 $max 分别向上取整和向下取整至最近的 10 的倍数。然后计算区间数量,并使用循环生成每个区间的 begin 和 end 值,将它们加入结果数组中。如果最后一个区间的 end 值大于 $max ,则将其设为 $max 。 |
 | | 4 aquman888 Aug 19, 2023 <?php $min = 13; $max = 47;
$data = array(); $current = $min;
while ($current <= $max) { $step_begin = $current; $step_end = min($current + 10 - ($current % 10), $max + 1);
$data[] = array( "begin" => $step_begin, "end" => $step_end - 1 );
$current = $step_end; }
print_r($data); ?> |