Я знаю, что мой вопрос может быть похож на а еще заявление? PHP. Однако это решение, похоже, не работает в моем случае.
So, in my case is something like this.
select из базы данных, чтобы получить все записи, затем получаю result in arraytotal и period из массива$qtyOut > $total, он будет зацикливать операторы внутри {}.
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'];
}
} else{ //when while loop ends, i want it to execute the code here
$sisa = $total - $qtyOut;
$this->m1->updateOut1($period, $sisa, $id);
}
}
И я все еще не могу найти правильный способ сделать это, следует ли мне использовать другой метод цикла и как это сделать?
операторы внутри условия else будут выполнены, если только $qtyOut не больше, чем $total. cmiiw
но вы сказали, что хотите, чтобы они выполнялись после завершения цикла while - это означает, что вы также хотите, чтобы эти операторы выполнялись, если $qtyOut > $total (в этом случае сразу после цикла). [Я на самом деле еще не изучал ваш код и его намерения, кстати - я просто пытаюсь следовать логике того, о чем вы просите.]
ну тогда ты прав, братан. У меня неправильное представление о заявлении while. это помогло, спасибо ...






Оператор If - else работает по этой логике. если условие при условии, что оператор if истинен, будет выполнен код insde {} if (condition) {//this code is executed}. Однако, если будет выполнен код условие = ложь под else. Имея это в виду, ваш оператор else НЕ БУДЕТ выполняться, когда $qtyOut > $total.
Если вы хотите выполнить его после оператора if, просто удалите else и скобки.
Если вы хотите выполнить его после завершения, попробуйте это
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);
}
}
If else explanation
Возьмите этот пример
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
зачем вам
if/elseв таком случае? Что может пойти не так, если будет просто циклwhile, а затем код в вашем текущем блокеelseпосле (и вне) цикла, чтобы всегда выполняться после завершения цикла?