【问题标题】:PHP if GET using if issetPHP if GET 使用 if isset
【发布时间】:2015-04-08 02:22:53
【问题描述】:

我是 PHP 新手,我想知道在 index.php 中显示错误的正确方法,但前提是存在错误,否则它什么也不做。

页面 index.php 将表单发送到 login.php 如果有错误它将错误返回到 index.php,如下所示:

index.php?error=1

然后在索引中我有以下代码,但感觉页面变慢了

<?php
if ($_GET['error']==1){echo "We show error 1 ...";}
if ($_GET['error']==2){echo "We show error 2 ...";}
if ($_GET['error']==3){echo "We show error 3 ...";}

?>

我怎样才能以正确的方式解决它?有些人使用 if isset 但我不知道如何使用这个函数它给我错误

【问题讨论】:

  • 你是如何尝试使用isset的?
  • 如果您添加的代码使页面速度超过几毫秒,我会感到非常惊讶。
  • 我想使用 isset 但我是新手,不知道如何开始和结束代码

标签: php mysql get


【解决方案1】:

任何时候你有你在你的例子中提出的重复,尝试使用function或存储array。尽管您的代码可能不会慢很多,但请尝试以下操作:

<?php
// List of errors. If you do it this way, you can keep
// adding errors without adding if/else
$error[1]= "We show error 1 ...";
$error[2]= "We show error 2 ...";
$error[3]= "We show error 3 ...";

// Check if set
if(isset($_GET['error']) && isset($error[$_GET['error']]))
    echo $error[$_GET['error']];
?>

【讨论】:

  • 真的不错。学到了一些新东西。非常感谢
  • 仅供未来用户在这里提交,代码在 echo 之前缺少 {
  • 为你编程,解决同一个问题的三种不同方法。当您使用大型应用程序并且有特定的错误代码时,此方法绝对有用。
  • @Rasclatt,您实际上可以使用以下方法缩短它:if (isset($error[$_GET['error']]))
  • @Devon Oh 索引通知。是的,这是真的。这么短的代码,辛苦了!
【解决方案2】:

您的代码中没有提供isset,但这也提供了一个向您介绍switch的机会。

if (isset($_GET['error'])) {
  switch($_GET['error']) {
     case 1:
         echo "We show error 1...";
         break;
     case 2:
         echo "We show error 2...";
         break;
     case 3:
         echo "We show error 3...";
         break;
  }
}   

您可以将它们全部组合到一个开关中,而不是使用不同的 if。这类似于使用 elseif 但更整洁(在我看来)。

【讨论】:

  • 新PHP? Switch 从 PHP 4 开始就已经存在,所以十年了。
【解决方案3】:

isset 在 PHP 中来自文档,用于确定变量是否已设置且不为 NULL。参考here

这就是你可以在你的情况下使用它的方式。

假设 URL 类似于 index.php?error=1

那么你可以使用:

if( isset($_GET['error']) ){
    if( $_GET['error'] == 1 ) {echo 'Error 1!';}
    elseif( $_GET['error'] == 2 ) {echo 'Error 2!';}
    elseif( $_GET['error'] == 3 ) {echo 'Error 3!';}
}

一旦遇到任何错误代码,使用elseif 可以终止执行。例如,如果您有error=2,它不会检查error=3 是否因此使执行更快。但是就像上面提到的 Scopey 一样,这种事情的执行时间差异其实是你不必担心的。

希望这会有所帮助。谢谢。

【讨论】:

  • 这个似乎工作正常。我会接受这个答案。只是一个小问题。我需要在最后一个代码中设置“else”吗?就像 if elseif elseif else 一样?或者它会像那样正常工作吗?
  • 如果你只输入else,这意味着除 1 和 2 之外的任何错误代码(比如 3 或 4 或 5 等)都将进入该块。但是如果你把elseif你会检查​​除了错误1和2,如果错误是3然后显示一些东西。
猜你喜欢
  • 2017-04-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-08-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多