【问题标题】:While-Else Condition PHPWhile-Else 条件 PHP
【发布时间】:2018-11-05 06:49:15
【问题描述】:

我知道我的问题可能与 while else statement? PHP。 但是,该解决方案似乎不适用于我的情况。

所以,在我的情况下是这样的。

  1. 我从数据库执行select 查询以获取所有记录,然后获取result in array
  2. 我从数组中得到totalperiod
  3. 做检查,当$qtyOut > $total,它会循环{}里面的语句。
  4. 这是这里的问题,AFTER LOOP ENDS,它应该做else语句(调用另一个函数)。
公共函数 trialOut($id, $qtyOut) { $a = $this->uri->segment(3); $dataset = $this->m1->trial($a); $i = 0; $西萨; $total = $dataset[$i]['total']; $period = $dataset[$i]['periode']; 如果($qtyOut > $total){ 而($qtyOut > $total){ $qtyOut = $qtyOut - $total; $this->m1->updateOut2($period, $id); $i++; $total = $dataset[$i]['total']; $period = $dataset[$i]['periode']; } } else{ //当while循环结束时,我希望它执行这里的代码 $sisa = $total - $qtyOut; $this->m1->updateOut1($period, $sisa, $id); } }

我仍然找不到正确的方法来执行此操作,我应该使用另一种循环方法吗?该怎么做?

【问题讨论】:

  • 在这种情况下为什么需要if/else?只使用while 循环,然后在循环之后(和外部)当前的else 块中的代码总是在循环完成后执行,会出现什么问题?
  • else 条件中的语句,只有在$qtyOut 不大于$total 时才会执行。 cmiiw
  • 但是您说您希望它们在 while 循环完成后发生 - 这意味着您还希望在 $qtyOut > $total 时执行这些语句(在这种情况下,就在循环之后)。 [我实际上还没有真正看过你的代码及其意图,顺便说一句 - 我只是试图遵循你所要求的逻辑。]
  • 那么,你是对的,兄弟。我对while 声明有误解。很有帮助,谢谢...

标签: php codeigniter web while-loop


【解决方案1】:

If - else 语句按此逻辑运行。 if 语句下的 if 条件为 true 代码 insde {} if(condition) {//this code is executed} 将执行。但是,如果 condition = false 将执行 else 下的代码。考虑到这一点,您的 else 语句将不会在 $qtyOut > $total 时执行。

如果你想在 if 语句之后执行它,只需删除 else 和括号。

如果你想在 while 结束后执行它,试试这个

public function trialOut($id, $qtyOut)
        {
            $a = $this->uri->segment(3);
            $dataset = $this->m1->trial($a);
            $i = 0;
            $sisa;
            $total = $dataset[$i]['total'];
            $period = $dataset[$i]['periode'];
            if($qtyOut > $total){
                while ($qtyOut > $total) {
                    $qtyOut = $qtyOut - $total;
                    $this->m1->updateOut2($period, $id);
                    $i++;
                    $total = $dataset[$i]['total'];
                    $period = $dataset[$i]['periode'];
                }
                $sisa = $total - $qtyOut;
                $this->m1->updateOut1($period, $sisa, $id);
            } 
        }

否则说明

举个例子

x = 5;
if( x = 5 ){
echo 'x is 5';
}
if( x != 5){
echo 'x is not five'
}

代码相同
x = 5;
if( x = 5 ){
echo 'x is 5';
}else{
echo 'x is not five'
}

在第一种情况下,您要检查 x 是否 = 5,然后检查 x 是否不等于 5。 在第二种情况下,您正在检查 x = 5,如果不是,则 else 将执行

【讨论】:

    猜你喜欢
    • 2015-10-23
    • 2014-01-21
    • 1970-01-01
    • 2015-02-02
    • 1970-01-01
    • 2017-06-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多