-1

我有一个性能问题。我用 4 种不同的方式构建了一个页面isset($_GET[""])

让我们打电话给他们

Menu1
Menu2
Menu3
Menu4

我的问题是,当页面设置为例如 Menu1 ( index.php?Menu1) 时,PHP 是否仍在加载 Menu2、3 和 4 的代码,即使它们没有设置?

如果是这样,我猜这是一个非常糟糕的结构,如果它获得大量流量,它会减慢网站的速度,因为在其中一些菜单中我使用 mysql。

提前致谢!

4

2 回答 2

1

如果你说if(isset($stuff)),条件内的代码只有在设置了 $stuff 时才会运行

如果你有if(isset($_GET['menu1']),然后去index.php?menu1=something

其他 if 中的所有代码将永远不会运行。只会检查条件。

于 2013-09-29T15:50:20.290 回答
1

isset 只会评估变量,不允许函数或函数返回值。来自PHP 手册(isset)

<?php

$a = array ('test' => 1, 'hello' => NULL, 'pie' => array('a' => 'apple'));

var_dump(isset($a['test']));            // TRUE
var_dump(isset($a['foo']));             // FALSE
var_dump(isset($a['hello']));           // FALSE

// The key 'hello' equals NULL so is considered unset
// If you want to check for NULL key values then try: 
var_dump(array_key_exists('hello', $a)); // TRUE

// Checking deeper array values
var_dump(isset($a['pie']['a']));        // TRUE
var_dump(isset($a['pie']['b']));        // FALSE
var_dump(isset($a['cake']['a']['b']));  // FALSE

如果使用 AND 运算符在 if 语句中放置多个条件,则 if 语句将在找到第一个错误条件后立即停止计算。在以下示例中,永远不会调用 foo():

$a = (false && foo());
$c = (false and foo());

以类似的方式,您可以给 isset 多个参数进行评估。该手册说“如果提供了多个参数,则仅当设置了所有参数时 isset() 才会返回 TRUE。评估从左到右进行,并在遇到未设置的变量时立即停止。” :

$a = "test";
$b = "anothertest";

var_dump(isset($a));      // TRUE
var_dump(isset($a, $b));  // TRUE

unset ($a);

var_dump(isset($a));      // FALSE
var_dump(isset($a, $b));  // FALSE
于 2013-09-29T16:02:00.837 回答