1
MiaoLei911 OP 不会写马克 php 语法,无法格式化,可以复制结果数组到 https://www.json.cn/# 看下。感谢 v 友
|
2
dsphper 2023-04-12 18:59:06 +08:00
> 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) { $end = $max; } // 将当前区间的 begin 和 end 值加入结果数组 $result[] = [ "begin" => $begin, "end" => $end ]; } ``` 这段代码首先将 $min 和 $max 分别向上取整和向下取整至最近的 10 的倍数。然后计算区间数量,并使用循环生成每个区间的 begin 和 end 值,将它们加入结果数组中。如果最后一个区间的 end 值大于 $max ,则将其设为 $max 。 |
3
MiaoLei911 OP @dsphper 感谢,https://www.v2ex.com/t/932011#reply5 3 楼已经回复解决了
|
4
aquman888 2023-08-19 17:26:26 +08:00
<?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); ?> |