我已经在这里问过这个问题。 Run php code conditionally
我对db进行了一些修改。 之前给出的答案可能是正确的,我已经尝试过但不起作用。 这些答案可能超出了我对PHP的理解。
以下是同一问题的改写版本。
我要替换的实际代码
if ($condition1 >= $offer1 AND $condition2 >= $offer2 AND
$condition3 >= $offer3 AND $condition4 >= $offer4 )
{ //run code }
else { //some error messages }
$condition1 and all are numeric value
$offer1 and all are numeric value
我想用新的代码替换此代码。以下示例。
if ($offercurrent[0]>=$offerpoints[0] AND $offercurrent[1]>=$offerpoints[1] AND
$offercurrent[2]>=$offerpoints[2] AND $offercurrent[3]>=$offerpoints[3] )
{ //run code }
else { //some error messages }
$offerstatus = enabled or disabled
$offercurrent = numeric values
$offerpoints = numeric values
$offercurrent $offerpoints status
50 51 enabled
100 99 enabled
122 865 disable
NNN offern disable
数据库值
while($row = mysql_fetch_array($sql))
{
$offername[] = $row['name'];
$offercurrent[] = $row['current'];
$offerstatus[] = $row['status'];
$offerpoints[] = $row['points'];
}
问题:
代码应该仅在offerstatus = enabled时运行。一个条件得到满足。它应该检查所有发生的当前和提供点的发生 我试图用这个代码替换以前的代码
$check=false;
for ($i=0;$i<count($offerstatus);$i++) {
//echo "$offerstatus[$i]";
if ($offerstatus[$i]=="enabled") {
if($offercurrent[$i]>=$offerpoints[$i]) {$check=true;}
echo "$offername[$i]";}
}
echo "$check";
if ($check=true) { //run code }
else {//error messages}
使用此代码检查alyways返回1(true) 它只检查第一个值并忽略其余的值。
答案 0 :(得分:0)
通过在代码中添加else来解决此问题。
$check=false;
for ($i=0;$i<=count($offerstatus);$i++) {
//echo "$offerstatus[$i]";
if ($offerstatus[$i]=="enabled") {
if($offercurrent[$i]>=$offerpoints[$i]) {$check=true;}
else{ $check=false;
break; //if $condition is less than $offer it will get out of loop.
}
}
}
if ($check=true) { //run code }
else {//error messages}