首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何根据条件添加数据和日期?

如何根据条件添加数据和日期?
EN

Stack Overflow用户
提问于 2016-09-16 11:35:22
回答 3查看 68关注 0票数 0

下面是我的php代码,它返回日期,直到条件为false为止:

代码语言:javascript
复制
<?php
$paid = 2000;
$monthly = 750;
$date_array = array("2016-07", "2016-09");
$bill_paid_array =  array(750, 600);

$x=0;
do {

    $found = false;
    while (!$found) {
        $date = date('2016'.'-'.'07'.'-d');
        $time = strtotime($date);
        $bill_month = date("Y-m", strtotime( ($x++)." month", $time));
        $found = !in_array($bill_month,$date_array) ;
    }

    echo date($bill_month."-d") . "=> $monthly<br/>\n";

    $paid -= $monthly;
    if ($paid < $monthly) {
        $monthly = $paid;
    }
} while ($paid > 0);

返回数据:

代码语言:javascript
复制
2016-08-16=> 750
2016-10-16=> 750
2016-11-16=> 500

的工作原理:

此代码正在检查哪个月账单用户已从开始日期起支付。如果月份存在,那么下个月将显示,直到条件为false。

现在是:例如:开始日期是:2016-07-01和用户已经支付了2016-072016-09月账单(见$date_array)

现在用户正在支付2000,他的账单金额是750。所以这段代码显示的是后面的日期和金额。

返回数据:

代码语言:javascript
复制
2016-08-16=> 750
2016-10-16=> 750
2016-11-16=> 500

我现在想要什么

现在,如果我再次支付了一个新的账单,750,那么按照上面的代码,这一行:date($bill_month."-d") . "=> $monthly<br/>\n";将显示给我2016-12-16日期:但是我不想要。我想展示一下:2016-11-162502016-12-16500

注:我每个月都有$bill_paid_array,

更新:

代码语言:javascript
复制
$allBillMonth = mysqli_query($conn, "SELECT YEAR(bill_month) AS bill_year, MONTH(bill_month) AS bill_month, pay_amount FROM clients_pay_bill WHERE client_id = '$client_id' AND uid = '$uid' ");

$date_array = array();
$pay_amount_array = array();

while( $fetchAllBillMonth = mysqli_fetch_array($allBillMonth) ) {
    $year = $fetchAllBillMonth['bill_year'];
    $month = $fetchAllBillMonth['bill_month'];
    $date_array[] = "$year-$month";
    if($monthly_bill != $fetchAllBillMonth['pay_amount']) {
        $flag = 0;
    } else {
        $flag =1;
    }

    $db_paid_amount = $fetchAllBillMonth['pay_amount'];
    $pay_amount_array[] = "$year-$month => [$db_paid_amount, $flag]";
}

输出:

代码语言:javascript
复制
Array
(
    [0] => 2016-8 => [750.00, 1]
    [1] => 2016-9 => [750.00, 1]
    [2] => 2016-10 => [700.00, 0]
)
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2016-09-16 12:29:31

看看这个,我修改了$bill_paid_array,如果你有什么问题我会解释的

代码语言:javascript
复制
<?php
$paid = 2000;
$monthly = 750;
$date_array = array("2016-07", "2016-09");
$bill_paid_array =  array("2016-07" => [750,1], "2016-09" => [600,0]);

$is_full_amount = 1;
$previous_month = 0;
$x=0;

do {

$found = false;
while (!$found) {
    $date = date('2016'.'-'.'07'.'-d');
    $time = strtotime($date);
    $bill_month = date("Y-m", strtotime( ($x++)." month", $time));
    if (in_array($bill_month,$date_array)){
        if ($bill_paid_array["$bill_month"][1] == 0){
            $found = true;
            $previous_month = $monthly -$bill_paid_array["$bill_month"][0];
        }
    }else
        $found = !in_array($bill_month,$date_array) ;

}
if ($previous_month >0){
    echo date($bill_month."-d") . "=> $previous_month<br/>\n";
    $paid -= $previous_month;
    $previous_month = 0;
    $bill_paid_array["$bill_month"][1] = 1;
    $bill_paid_array["$bill_month"][0] =  $monthly;

}else {
    echo date($bill_month."-d") . "=> $monthly<br/>\n";
    $date_array[]=$bill_month;
    $bill_paid_array[$bill_month] = [$monthly,$is_full_amount];
    $paid -= $monthly;

}

if ($paid < $monthly) {
    $monthly = $paid;
    $is_full_amount = 0;
}
} while ($paid > 0);

希望它能按您的意愿工作:)

票数 1
EN

Stack Overflow用户

发布于 2016-11-15 08:05:45

尝尝这个

代码语言:javascript
复制
while (!$var) {
    $date = date('2016'.'-'.'07'.'-d');
    $time = strtotime($date);
    $bill_month = date("Y-m", strtotime( ($x++)." month", $time));
    if (in_array($bill_month,$date_array)){
        if ($bill_paid_array["$bill_month"][1] == 0){
            $found = true;
            $previous_month = $monthly -$bill_paid_array["$bill_month"][0];
        }
    }else
        $found = !in_array($bill_month,$date_array) ;

}
票数 0
EN

Stack Overflow用户

发布于 2016-09-16 12:31:55

代码语言:javascript
复制
<?php
$paid = 2000;
$monthly = 750;
$date_array = array("2016-07", "2016-09");
$bill_paid_array =  array("2016-07" => [750,1], "2016-09" => [600,1]);

$is_full_amount = 1;
$previous_month = 0;
$x=0;

do {

$found = false;
while (!$found) {
    $date = date('2016'.'-'.'07'.'-d');
    $time = strtotime($date);
    $bill_month = date("Y-m", strtotime( ($x++)." month", $time));
    if (in_array($bill_month,$date_array)){
        if ($bill_paid_array["$bill_month"][1] == 0){
            $found = true;
            $previous_month = $monthly -$bill_paid_array["$bill_month"][0];
        }
    }else
        $found = !in_array($bill_month,$date_array) ;

}
if ($previous_month >0){
    echo date($bill_month."-d") . "=> $previous_month<br/>\n";
    $paid -= $previous_month;
    $previous_month = 0;
    $bill_paid_array["$bill_month"][1] = 1;
    $bill_paid_array["$bill_month"][0] =  $monthly;

}else {
    echo date($bill_month."-d") . "=> $monthly<br/>\n";
    $date_array[]=$bill_month;
    $bill_paid_array[$bill_month] = [$monthly,$is_full_amount];
    $paid -= $monthly;

}

} while ($paid > 0);
票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39530515

复制
相关文章

相似问题

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