Php 如何管理组合框一起工作?
我有两个组合框。一种是“管理员”、“城市”、“剧院”,另一种是每日和每周。如果用户选择第一个项目和第二个项目中的一个,则显示每日操作。如果用户在第一个项目中选择一个项目,在第二个项目中不选择任何内容,则显示每日和每周操作。若用户并没有在第一个选项中选择任何内容,在第二个选项中并没有选择任何内容,那个么它会打开所有的操作。 因此,我认为有2^3个if条件。有没有办法减少这种情况?我使用的是PHP语言,但我认为所有语言的核心算法都是一样的 以下是我迄今为止在三种情况下所做的工作(如果是管理、每日和每周):Php 如何管理组合框一起工作?,php,algorithm,Php,Algorithm,我有两个组合框。一种是“管理员”、“城市”、“剧院”,另一种是每日和每周。如果用户选择第一个项目和第二个项目中的一个,则显示每日操作。如果用户在第一个项目中选择一个项目,在第二个项目中不选择任何内容,则显示每日和每周操作。若用户并没有在第一个选项中选择任何内容,在第二个选项中并没有选择任何内容,那个么它会打开所有的操作。 因此,我认为有2^3个if条件。有没有办法减少这种情况?我使用的是PHP语言,但我认为所有语言的核心算法都是一样的 以下是我迄今为止在三种情况下所做的工作(如果是管理、每日和
<?php
if(strlen($_POST['attribute'])>0)
{
echo "For admin: ";
echo "</br>";
//If admin
if($_POST['attribute'] == 'Admin'){
//If daily
if($_POST['date'] == 'Daily'){
echo "The only feature to show update is making a user admin\n";
echo "</br>";
$fh = fopen('back-up/makeadmin.txt','r');
$foo = true;
while ($line = fgets($fh)) {
if($foo){
//Current time
$now = new DateTimeImmutable();
//One week ago
$oneDayAgo = $now->sub(new DateInterval('P1D'));
echo "</br>";
echo "</br>";
$date = DateTime::createFromFormat('m/d/Y h:i:s a+', $line);
//Here you can compare your dates like any other variables
if ($date > $oneDayAgo) {
/* Nothing echo "Current date is less than 1 week old";
Break;
*/
break;
}
if ($date < $oneDayAgo) {
echo "$line";
}
var_dump($line);
}
$foo = (!$foo);
}
fclose($fh);
}
else { /*if($_POST['date'] == 'Weekly'){*/
echo "The only feature to show update is making a user admin\n";
echo "</br>";
$fh = fopen('back-up/makeadmin.txt','r');
$foo = true;
while ($line = fgets($fh)) {
if($foo){
//Current time
$now = new DateTimeImmutable();
//One week ago
$oneWeekAgo = $now->sub(new DateInterval('P1W'));
echo "</br>";
echo "</br>";
$date = DateTime::createFromFormat('m/d/Y h:i:s a+', $line);
//Here you can compare your dates like any other variables
if ($date > $oneWeekAgo) {
/* Nothing echo "Current date is less than 1 week old";
Break;
*/
}
if ($date < $oneWeekAgo) {
echo "Current date is more than 1 week old";
}
var_dump($line);
}
$foo = (!$foo);
}
fclose($fh);
}
//If not daily
else
{
echo "weekly";
}
}
}
else
{
echo "Not admin";
}
?>
我不熟悉PHP,但如果您的代码中有大量硬编码的
if
语句,这显然表明您需要更好的数据结构,或者可能需要任何数据结构
例如,您复制了一整段代码,其中第一段代码使用的是$oneDayAgo
,第二段代码使用的是$oneWeekAgo?
。根据第二个列表框的值,您可以很容易地将其转换为一个变量,该变量的时间跨度为七天或一天
我不确定选择第一个框的目的是什么,可能是要读取的文件?您可能也能找到这三种情况的一些常见行为,并尝试用变量而不是代码来表达它们
您可能将相关数据存储为关联数组,其键为列表框的值:
$span = array("Daily" => "P1D", "Weekly" => "P1W");
作为下一步,您甚至可以使用数组的键(胖箭头左边的值)从PHP填充列表,并且可以轻松地将列表与时间跨度一起扩展,而无需添加任何新代码,只需添加新数据
最后,一个UI小问题:如果只有两个值,就不应该使用下拉列表框。使用一组相邻的两个单选按钮,用户将能够一眼看到这两个选项,而无需单击任何内容。(我也不认为这些是组合框,因为组合框允许通过手动输入值或从下拉列表中选择值来输入值。)