咨询(请教) PHP 数组逻辑处理问题。

2023-04-12 17:57:48 +08:00
 MiaoLei911
已知有两位数(变量),最小值$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
1117 次点击
所在节点    PHP
4 条回复
MiaoLei911
2023-04-12 18:06:46 +08:00
不会写马克 php 语法,无法格式化,可以复制结果数组到 https://www.json.cn/# 看下。感谢 v 友
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 。
MiaoLei911
2023-04-12 19:04:02 +08:00
@dsphper 感谢,https://www.v2ex.com/t/932011#reply5 3 楼已经回复解决了
aquman888
254 天前
<?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);
?>

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/932006

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX