0

我在创建此功能时遇到问题。我的代码一团糟,我被卡住了,所以我宁愿不发布它。我宁愿要求一个新的解决方案。

我有一个数组(mysql 行),以今天的日期作为条件获取。我想根据前一个数组中的数据创建一个新数组,并在今天之前将其插入数据库。限制为 15。因此,如果到此日期已经有 10 行,则仅插入 5 行,并在下一个日期继续,只要第一个数组中有行。

我正在使用 php 和代码点火器。

4

2 回答 2

0

我不知道您如何获取数据或如何生成新数据,但类似这样;

//loop through days that you want to check/update
    //fetch existing data for this day into $data
    if( count( $data ) >= 15 ) continue; //skip days that already have 15+
    for( $x = 0; $x < 15 - count( $data ); $x++ )
    {
        //insert one new row here
    }
//end days loop
于 2013-08-16T23:20:55.293 回答
0

这就是我的做法,它做了我想做的事。不确定这是否是实现此功能的最佳方式。在这里,我使用一个临时数组来进行测试。每个元素将是数据库的新行。仅使用 3 作为最大值(而不是 15)进行测试。

    $subscriptions = Subscription::all(array('conditions' => 'token != "" ', 'order' => 'id asc'));
    $startTime = strtotime('2013-08-15'); 

    $temparray = array();

    $projects = Project::all(array('conditions' => 'end = "'.date("Y-m-d", $startTime).'" '));
    if ($projects){$counter = count($projects);}else{$counter = 0;}

    while (list($key, $value) = each($subscriptions))
    {
        if ($counter == 3)
        {
            do
            {
                $startTime = strtotime('+1 day', $startTime);
                $projects = Project::all(array('conditions' => 'end = "'.date("Y-m-d", $startTime).'" '));
                if (count($projects) < 3)
                    {
                        $counter = count($projects);
                        break;
                    }
            } while ($counter <= 3);

                $temparray[] = $value->date . " " . date("Y-m-d", $startTime);
                continue;   
        }

    $temparray[] = $value->date . " " . date("Y-m-d", $startTime);
    $counter++;
    }
于 2013-08-17T18:38:41.507 回答