为什么我要检查" IF" ($ _GET [" $ view"])&& $ _GET(" $视图")! 。什么"!"意思?为什么它等于=""

时间:2013-08-25 18:56:17

标签: php if-statement switch-statement

我无法理解,如果判刑。为什么我不能检查是否设置了$ view?还有2个问题 - 什么是“$ _GET(”$ view“)!” “!”标志意味着什么?什么更改?而且,为什么它等于=“”?

<?php
$myurl=htmlspecialchars($_SERVER["PHP_SELF"]);
  $view="";
 if(isset($_GET["$view"]) && $_GET("$view")! = "") { $view =$_GET["$view"];};
include(head.html);

switch($view] {

case "" :
 include(main.html);
break;

case "people" :
 include(people.html);
  break;
 case:"contact":
 include(contact.html);
 break;

 default :

    include(404.html);
    break;

};

include_once(foot.html;
?>

感谢所有帮助

4 个答案:

答案 0 :(得分:1)

  

为什么我不能检查是否设置了$ view?

因为显然该代码的作者不希望空字符串有效。例如,如果有一个名为$view的字段且用户未在其中放置任何内容,则会出现这种情况。

实际上,你可以这样做,因为$view无论如何都被初始化为空字符串!此代码可能是由新手复制/粘贴或编写的。

  

什么!改变?

它实际上是!=,以令人困惑的方式编写。这两个是相同的:

&& $_GET("$view")! = "")
&& $_GET("$view") != "")

此外,您的代码有错误。 $_GET("$view")无效,()应为[]。所以,这是更正和可读的代码:

if (isset($_GET["$view"]) && $_GET["$view"] != "") {
    $view = $_GET["$view"];
}

此外:

switch($view]           // ...what is this?
include_once(foot.html; // and this?
case:"contact":         // ummmm

答案 1 :(得分:1)

我认为你搞砸了你的代码。由于许多错误,这将不会执行。 if语句可能是

if(isset($_GET[$view]) && $_GET[$view] != "")

即,首先检查$ view键是否存在,然后检查该键是否为空。请注意不存在的密钥与存在但是为空的密钥之间的区别,以及在这种情况下检查两者的原因。

答案 2 :(得分:1)

$view="";
 if(isset($_GET["$view"]) && $_GET("$view")! = "") { $view =$_GET["$view"];};

您实际上将$view="";设置为空参数 isset($_GET["$view"]的内容如下所示isset($_GET[""] 使用上述代码的整个if语句将被忽略

同样,您的switch($view);也看起来像switch("") 这意味着无论您在$_GET

中拥有什么,都只会执行您的第一个案例

检查代码的这一部分是否也有错误。案件需要移除后的冒号

case:"contact":
 include(contact.html);
 break;

答案 3 :(得分:0)

首先,正确使用[]和()。然后你必须了解运营商:http://www.w3schools.com/php/php_operators.asp

现在你的代码没有意义。