-1

我无法理解 if 语句。为什么我不能只检查 $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

4 回答 4

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
于 2013-08-25T18:59:10.610 回答
1

我认为你搞砸了你的代码。由于许多错误,这将不会执行。if声明大概是

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

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

于 2013-08-25T18:59:45.130 回答
1
$view="";
 if(isset($_GET["$view"]) && $_GET("$view")! = "") { $view =$_GET["$view"];};

你实际上设置$view="";为一个空参数 isset($_GET["$view"]看起来像这样isset($_GET[""] 你上面代码的整个 if 语句被忽略

同样你switch($view);也看起来像switch("") 这意味着无论你有什么,只有你的第一个案例将被执行$_GET

检查这部分代码是否有错误。需要删除 case 后的冒号

case:"contact":
 include(contact.html);
 break;
于 2013-10-30T10:37:49.533 回答
0

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

现在你的代码是无意义的。

于 2013-08-25T19:04:41.450 回答