PHP-对许多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";

编辑:非常简单,想清楚。只要在前面放一个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 ($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";
}