PHP - 逐个检查变量的更好方法

时间:2014-01-09 13:40:12

标签: php variables

我有一个用户上传特定图像的php应用程序,每个用户的图像数量可能不同。对于每个图像,我在启动时将变量设置为false,一旦完成,我将变为true。

例如,一个用户可能必须上传3并且到目前为止已完成2所以:

$required = 3;
$houseImageStatus1 = true;
$houseImageStatus2 = true; 
$houseImageStatus3 = false;

另一个可能必须上传5并完成所有操作:

$required = 5;
$houseImageStatus1 = true;
$houseImageStatus2 = true; 
$houseImageStatus3 = true;
$houseImageStatus4 = true;
$houseImageStatus5 = true;

我需要能够在继续之前检查所有必需的图像是否已上传。目前,我有一种非常啰嗦和丑陋的方式:

if($required==3){
    if($houseImageStatus1==true && 
       $houseImageStatus2==true && 
       $houseImageStatus3==true){
       // allow continue
    }
    else {
        // pause
    }
}

if($required==5){
    if($houseImageStatus1==true && 
       $houseImageStatus2==true && 
       $houseImageStatus3==true && 
       $houseImageStatus4==true && 
       $houseImageStatus5==true){
       // allow continue
    }
    else {
        // pause
    }
}

我能以更短更清洁的方式完成上述工作吗?也许在某种数组中并将它们作为函数循环?

5 个答案:

答案 0 :(得分:3)

为此目的使用数组:

$houseImageStatus[1] = true;
$houseImageStatus[2] = true; 
$houseImageStatus[3] = false;

然后检查是否都是真的:

if (count(array_unique($houseImageStatus)) === 1 && $houseImageStatus[0] === true) {
    // here you go
} else {
    // nope
}

答案 1 :(得分:1)

你可以使用:

  1. 数组并检查数组中的falses并检查数组的索引,您可以确定大小(此处将其命名为 $ required )。

                                   OR 
    
  2. 使用每次上传图像时递增的计数器.... 使用不同用户的不同计数器。您不必为每个用户提供单独的变量。您可以使用任何现有的用户相关变量,如user_id或user_name ..

答案 2 :(得分:0)

将布尔值存储在数组中,使用array_filter删除false值,然后根据变量$required检查数组大小:

$houseImageStatus = array();
$houseImageStatus[0] = true;
$houseImageStatus[1] = true; 
$houseImageStatus[2] = false;
// and so on

if(sizeof(array_filter($houseImageStatus)) == $required){
// everything is okay
}
else{
// something is wrong
}

答案 3 :(得分:0)

您可以将所有值设置为false的数组:

$houseimages = array();
$n = 5; // How many pictures
for($i = 0; $i < $n; $i++) $houseimages[$i] = false; // Set all to false

现在,当用户上传一张图片时,只需设置$ houseimages [0] = true;等等。

稍后只需查看数组并检查所有值是否为真。

答案 4 :(得分:0)

$required = 3;
$filled =0;
$houseImageStatus1 = true; $filled=$filled+1;

if ($required==$filled){//continue} else {//pause}