首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >PHP -获取具有特殊差异的数字的最小值和最大值。

PHP -获取具有特殊差异的数字的最小值和最大值。
EN

Stack Overflow用户
提问于 2017-03-20 08:42:00
回答 2查看 340关注 0票数 0

我有一个问题,从一行数字中得到最小值和最大值,其中的特殊差异是1800。为了更好地理解,我想给你们举下面的例子:

代码语言:javascript
运行
复制
array(0,1800,3600,5400,7200,12600,14400,16200,23400,25200);

我的数字行的特殊差别是1800。当一个数字与下一个数字正好有1800的差时,它们是同一行的数字。如果不是,它们是另一行的编号。因此,我需要一个函数,它将为上面提到的数组生成以下输出:

  • 输出1:最小值0,最大值7200
  • 输出2:最小值12600,最大值16200
  • 输出3:最小值23400,最大值25200

我希望你能理解我的问题。对不起,我的英语,并感谢提前。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-03-20 08:59:01

最好向您展示一些您已经尝试过的代码。但是,这里有一个非常简短的代码示例,我把它们放在一起。

代码语言:javascript
运行
复制
$lists       = [];
$special     = 1800;
$array       = [0, 1800, 3600, 5400, 7200, 12600, 14400, 16200, 23400, 25200];
$currentList = [];
foreach ($array as $number) {
    if (empty($currentList)) {
        $currentList[] = $number;
    } else {
        $last =(end($currentList) + $special);
        if ($number === $last) {
            $currentList[] = $number;
        } else {
            $lists[]     = $currentList;
            $currentList = [$number];
        }
    }
}
$lists[] = $currentList;
var_dump($lists);

这将输出以下数组,可以在所需的输出中转换该数组。

代码语言:javascript
运行
复制
array (size=3)   0 => 
    array (size=5)
      0 => int 0
      1 => int 1800
      2 => int 3600
      3 => int 5400
      4 => int 7200   1 => 
    array (size=3)
      0 => int 12600
      1 => int 14400
      2 => int 16200   2 => 
    array (size=2)
      0 => int 23400
      1 => int 25200
票数 1
EN

Stack Overflow用户

发布于 2017-03-20 08:58:12

您可以创建一个帮助函数来迭代输入,并将值添加到行数组中。

代码语言:javascript
运行
复制
function getRows($input, $specialDifference) {
    $rows = array();
    $newRow = true;
    for ($index = 0; $index < count($input); $index++) {
        if ($newRow) {
            $rows[] = array();
            $newRow = false;
        }
        $rows[count($rows) - 1][]= $input[$index];
        $newRow = ((count($input) > $index + 1) && ($input[$index + 1] - $input[$index] !== $specialDifference));
    }
    return $rows;
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42899065

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档