如何计算PHP中按日期一行递增的最大数字量

如何计算PHP中按日期一行递增的最大数字量,php,arrays,counter,Php,Arrays,Counter,我的目标是获得在某个日期范围内连续增加的最大数量的数字的计数。下面是一个数组。2021年1月13日至2021年2月17日之间的最大金额增长数字的正确答案是5,因为数字3、8、10、13、15在该日期范围内增长 function LCIS($numbers) { $counter = 1; $answer = 1; for ($i = 0; $i < count($numbers) - 1; $i++) { // if ($numbers[$i] &l

我的目标是获得在某个日期范围内连续增加的最大数量的数字的计数。下面是一个数组。2021年1月13日至2021年2月17日之间的最大金额增长数字的正确答案是5,因为数字3、8、10、13、15在该日期范围内增长

function LCIS($numbers)
{
    $counter = 1;
    $answer = 1;
    for ($i = 0; $i < count($numbers) - 1; $i++) { //
        if ($numbers[$i] < $numbers[$i + 1]) { //comparing array indexes together
            $counter++; //
            $answer = max($answer, $counter); //this doesn't do anything spectacular right now...
        } else {
            $counter = 1;
        }

    }
    return $answer;
}

$row = array(
    array('01/02/2021', 1),
    array('01/13/2021', 4),
    array('01/15/2021', 6),
    array('01/19/2021', 9),
    array('01/30/2021', 5),
    array('02/03/2021', 4),
    array('02/11/2021', 3),
    array('02/12/2021', 8),
    array('02/15/2021', 10),
    array('02/16/2021', 13),
    array('02/17/2021', 15),
    array('02/18/2021', 16)
);

$numbers = array();
$startDateNew = date('m/d/Y', strtotime("2021-01-13"));
$endDateNew = date('m/d/Y', strtotime("2021-02-17"));
foreach($row as $x) {
    if(($x[0]>=$startDateNew)&&($x[0]<=$endDateNew) ){
        $numbers[] = $x[1];
    }
}

echo LCIS($numbers);
我设法在一段时间内搜索

$row = array(
  array('01/02/2021', 1),
  array('01/13/2021', 4),
  array('01/15/2021', 6),
  array('01/19/2021', 9),
  array('01/30/2021', 5),
  array('02/03/2021', 4),
  array('02/11/2021', 3),
  array('02/12/2021', 8),
  array('02/15/2021', 10),
  array('02/16/2021', 13),
  array('02/17/2021', 15),
  array('02/18/2021', 16)
);

$startDateNew = date('m/d/Y', strtotime("2021-01-13"));
$endDateNew = date('m/d/Y', strtotime("2021-02-17"));
foreach($row as $x) {
  if(($x[0]>=$startDateNew)&&($x[0]<=$endDateNew) ){
    echo 'Found ';
    print_r($x);
  }
}
$row=array(
阵列('01/02/2021',1),
阵列('01/13/2021',4),
阵列('01/15/2021',6),
阵列('01/19/2021',9),
阵列('01/30/2021',5),
阵列('02/03/2021',4),
阵列('02/11/2021',3),
阵列('02/12/2021',8),
阵列('02/15/2021',10),
阵列('02/16/2021',13),
阵列('02/17/2021',15),
阵列('02/18/2021',16)
);
$startDateNew=日期('m/d/Y',标准时间('2021-01-13');
$endDateNew=日期('m/d/Y',标准时间('2021-02-17');
foreach($x行){

如果($x[0]>=$startDateNew)&($x[0]如果你已经有了两部分代码,你只需要将它们组合在一起。我建议在检查
$row
数组元素是否在某个日期范围内时,给
$numbers
数组添加数据

function LCIS($numbers)
{
    $counter = 1;
    $answer = 1;
    for ($i = 0; $i < count($numbers) - 1; $i++) { //
        if ($numbers[$i] < $numbers[$i + 1]) { //comparing array indexes together
            $counter++; //
            $answer = max($answer, $counter); //this doesn't do anything spectacular right now...
        } else {
            $counter = 1;
        }

    }
    return $answer;
}

$row = array(
    array('01/02/2021', 1),
    array('01/13/2021', 4),
    array('01/15/2021', 6),
    array('01/19/2021', 9),
    array('01/30/2021', 5),
    array('02/03/2021', 4),
    array('02/11/2021', 3),
    array('02/12/2021', 8),
    array('02/15/2021', 10),
    array('02/16/2021', 13),
    array('02/17/2021', 15),
    array('02/18/2021', 16)
);

$numbers = array();
$startDateNew = date('m/d/Y', strtotime("2021-01-13"));
$endDateNew = date('m/d/Y', strtotime("2021-02-17"));
foreach($row as $x) {
    if(($x[0]>=$startDateNew)&&($x[0]<=$endDateNew) ){
        $numbers[] = $x[1];
    }
}

echo LCIS($numbers);
功能LCIS($number)
{
$counter=1;
$answer=1;
对于($i=0;$i如果($x[0]>=$startDateNew)&($x[0]哇!谢谢!离答案更近了。答案仍然有些神秘。在这个特定的日期范围内,答案应该是5,现在是6。当将$endDateNew更改为'2021-02-11'时,答案是2(应该是3)。当endDateNew为'2021-02-15'时,答案是4(应该是3)@kaaritz抱歉,但我不明白,在2021-01-13和2021-02-11的日期范围内,“积极”值为4=>6,6=>9。其他日期范围的情况也是如此。因此,可能您的
LCIS
函数的逻辑是错误的?好的,可能需要澄清一下!可能LCIS这个词不适合这个词。所以我想知道数字增长了多少倍。在日期范围2021-01-13和2021-02-11中。这里是数字rs增长了3倍:1.阵列('01/13/2021',4),2.阵列('01/15/2021',6),3.阵列('01/19/2021',9),这里它们增长了5倍:阵列1('02/11/2021',3),2.阵列('02/12/2021',8),3.阵列('02/15/2021',10),4.阵列('02/16/2021',13),5.阵列('02/17/2021',15),我要寻找的答案是,最长时间,在这种情况下是5次。那么你能告诉我2021-01-30和2021-02-11这段时间的答案是什么吗?@zeusam那么答案应该只有1,因为数字根本没有上升。