PHP - 对许多ifs做其他事吗?

时间:2013-06-21 10:05:46

标签: php request if-statement

编辑:非常简单,弄明白。只需在没有}之前添加一个其他{},这将适用于两个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

,该怎么办?

该页面将不存在,因此如果发生这种情况,我想要包含一个文件。 有没有办法在不使用列表或其他内容的情况下完成此操作?

9 个答案:

答案 0 :(得分:3)

你可以通过switch执行此操作,如果是因为

,这会更好
  

switch语句类似于同一表达式上的一系列IF语句。在许多情况下,您可能希望将相同的变量(或表达式)与许多不同的值进行比较,并根据它所等的值执行不同的代码。这正是switch语句的用途。 (manual

switch($_REQUEST['pag']){

case "registrar":
   include "inc/register.php";
   break;

case :"recuperar":
  include "inc/recover.php";
  break;

default:
  //default you want to include
  break;


}

我希望您了解代码的复杂性,在您的情况下,切换案例在最差/平均情况下的复杂性较低

答案 1 :(得分:2)

尝试ifelse一样

$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"
}  

或者你可以使用switch case来找到默认选项,如

switch($pag)
{
   case "register":include "inc/register.php";
                   break;
   case "recuperar":include "inc/recover.php";
                   break;
   default : include "inc/default.php";
}

答案 2 :(得分:1)

使用if {} else{}switch案例。

您可以使用nested if else

至少要关注文档 - http://php.net/manual/en/control-structures.elseif.php

答案 3 :(得分:1)

为什么不想使用数组?这真的是去恕我直言的最佳方式。添加页面更容易,您获得的代码更少...从配置文件或DB加载数组而不是在以后的体育场中进行硬编码也是微不足道的。我只看到了好处。

$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";
}

答案 4 :(得分:0)

some使用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";
}

答案 5 :(得分:0)

        $pag = isset($_REQUEST['pag']) ? $_REQUEST['pag'] : null;

        switch($pag) {
        case 'registrar':
            require 'inc/register.php';
            break;        
        case 'recuperar':
            require "inc/recover.php";
            break;
        default:
            // Include your default page
        }

在像C ++这样的非动态语言中,你必须使用它 if()elseif()else比较非常量值。

答案 6 :(得分:0)

if ($condition1) 
{
  //code
} 
elseif ($condition2)
{
  //code
}
elseif ($condition3)
{
  //code
}
...
else 
{
  //this is what happens when no other condition is true
}
切换是一种更好的做法。检查@ user1752647的答案

答案 7 :(得分:0)

尝试使用elseifelse

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 
}

希望它会对你有所帮助。

答案 8 :(得分:0)

您也可以使用此代码

$pages = array("register", "recover");
if (in_array($_REQUEST["pag"], $pages)) {
include $_REQUEST["pag"].".php";
}
else{
include "default.php";
}