我有一个用户上传特定图像的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
}
}
我能以更短更清洁的方式完成上述工作吗?也许在某种数组中并将它们作为函数循环?
答案 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)
你可以使用:
数组并检查数组中的falses并检查数组的索引,您可以确定大小(此处将其命名为 $ required )。
OR
答案 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}