[英]PHP foreach reset and remove/subtract array values if condition is true
如果我有以下值,则$ result = 0,$ request = 50和$ array = [25,20],如果$ request值大于$ array,如何将$ request值复位并减去$ array值。 如果条件$ request小于$ array值,或者$ request = 0或$ array values = 0,foreach将中断。
这样的条件和$ result将为5。
50 - [25, 20] |___ >= __| | 25 00 | |_ >= ________| 5 00
码:
while(true) {
$reset = false
$result = 0;
foreach($array as $key => $value) {
if($request >= $value) {
....
} else {
....
$reset = true;
break;
}
}
if(!$reset) {
break;
}
}
$request
与$result
相同,因此是同一件事,因此不需要。
$request = 50;
$array = array(25, 20);
foreach($array as $key => $value) {
if($request < $value || $request === 0 ) {
break;
}
$request = $request - $value;
}
echo 'Result: '.$request;
测试
$request = 50;
$array = array(25, 20);
// Result: 5
$array = array(25, 30);
// Result: 25
$array = array(25, 25);
// Result: 0
$array = array(51, 10);
// Result: 50
编辑
根据评论和OP小提琴进行编辑。
$request = 50;
$array = array(20, 25, 25);
$excess = max(array_sum($array) - $request, 0);
foreach($array as $key => $value) {
if($request < $value || $request === 0 ) {
$request = 0;
break;
}
$request = $request - $value;
}
echo 'Result: '.$request.'<br />';
echo 'excessValue: '.$excess;
测试
$request = 50;
$array = array(25, 20);
// Result: 5, excess: 0
$array = array(50, 20);
// Result: 0, excess: 20
$array = array(52, 5);
// Result: 0, excess: 7
$array = array(20, 25, 25);
// Result: 0, excess: 20
<?php
while(true) {
$reset = false;
$result = 0;
$request = 51;
$array = array(25, 20);
foreach($array as $value) {
if($request>=$value){
$request=$request-$value;
}
else{
break;
}
echo 'Result: '.$request;
}
if(!$reset) {
break;
}
}
?>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.