PHP-对许多ifs执行其他操作吗?
编辑:非常简单,想清楚。只要在前面放一个else{}而不放一个},这对两个ifs都有效 我写了这段代码,它工作正常PHP-对许多ifs执行其他操作吗?,php,request,if-statement,Php,Request,If Statement,编辑:非常简单,想清楚。只要在前面放一个else{}而不放一个},这对两个ifs都有效 我写了这段代码,它工作正常 if($_REQUEST['pag']){ // Variável da página $pag = $_REQUEST['pag']; // Possíveis páginas if($pag == "registrar"){ include "inc/register.php";
if($_REQUEST['pag']){
// Variável da página
$pag = $_REQUEST['pag'];
// Possíveis páginas
if($pag == "registrar"){
include "inc/register.php";
}
if ($pag == "recuperar"){
include "inc/recover.php";
}
}
但是如果用户键入?pag=ofksaofkoasdkfkopsd
,该怎么办
该页面将不存在,因此如果出现这种情况,我希望包含一个文件。
有没有一种方法可以不用列表或其他什么东西来实现这一点?尝试使用
if
和else
类似的方法
$pag = $_REQUEST['pag'];
// Possíveis páginas
if($pag == "registrar"){
include "inc/register.php";
}
elseif ($pag == "recuperar"){
include "inc/recover.php";
}
else{
include "inc/default.php"
}
或者您可以使用SwitchCase,您可以在其中找到默认选项,如
switch($pag)
{
case "register":include "inc/register.php";
break;
case "recuperar":include "inc/recover.php";
break;
default : include "inc/default.php";
}
使用
if{}else{}
或开关
大小写
但是,您可以使用嵌套if-else
至少看一看文档-你可以这样做,如果因为
switch语句类似于同一表达式上的一系列IF语句。在许多情况下,您可能希望将同一变量(或表达式)与许多不同的值进行比较,并根据它等于哪个值执行不同的代码段。这正是switch语句的作用。()
我希望您了解代码的复杂性,在您的情况下,switch在最坏/平均情况下的复杂性较低一些人使用switch命令
switch ($_REQUEST['pag']) {
case 'registrar':
echo "some text or action";
break;
case 'xxx':
echo "some text or action";
break;
case 'xxxx':
echo "some text";
break;
default:
echo "some text";
}
在C++之类的非动态语言中,你必须使用 if()elseif()else用于比较非常量值
if ($condition1)
{
//code
}
elseif ($condition2)
{
//code
}
elseif ($condition3)
{
//code
}
...
else
{
//this is what happens when no other condition is true
}
切换是一种更好的做法。检查@user1752647的答案尝试使用
elseif
和else
if($pag == "registrar"){
include "inc/register.php";
}elseif($pag == "recuperar"){
include "inc/recover.php";
}else{
... //include a file if the page doesn't exist
}
或者你可以用开关来做
switch($pag){
case "registrar":
include "inc/register.php";
break;
case "recuperar":
include "inc/recover.php";
break;
default:
... //include a file if the page doesn't exist
}
希望它能帮助您。为什么不使用阵列?那真的是最好的办法。添加页面更容易,得到的重复代码更少。。。从配置文件或数据库加载数组,而不是在以后的数据库中硬编码,这也很简单。我只看到好处
$pages = array( "registrar" => "inc/register.php",
"recuperar" => "inc/recover.php" );
$requestedPage = $_REQUEST["pag"];
if(array_key_exists($requestedPage, $pages)){
include $pages[$requestedPage];
}
else {
include "inc/error404.php";
}
您也可以使用此代码
$pages = array("register", "recover");
if (in_array($_REQUEST["pag"], $pages)) {
include $_REQUEST["pag"].".php";
}
else{
include "default.php";
}
这么大的代码。。我使用1个语句来计算它。再次检查编辑后的问题。这是更好的方法,使用
开关无需打断最后一个“case/default”,特别是如果它是默认的:)Thanku@Virus721。我只是快速给出了答案…谢谢你的建议你应该保持你的问题原样。当你没有答案时,答案是无用的。尽量不要选择最低效的解决方案;-)嗯,我试着使用你的代码,因为我想知道不同的选项。。在swith()行中,它给了我一个意外的结果。
$pages = array( "registrar" => "inc/register.php",
"recuperar" => "inc/recover.php" );
$requestedPage = $_REQUEST["pag"];
if(array_key_exists($requestedPage, $pages)){
include $pages[$requestedPage];
}
else {
include "inc/error404.php";
}
$pages = array("register", "recover");
if (in_array($_REQUEST["pag"], $pages)) {
include $_REQUEST["pag"].".php";
}
else{
include "default.php";
}