当变量为空时,如何在 PHP 中激活 URL 导航?

How can I make a URL navigation active in PHP when the variable is empty?

提问人:Nancy 提问时间:5/27/2023 更新时间:5/27/2023 访问量:43

问:

我有一个问题,使 url 表单导航处于活动状态,以便它亮起。

我有这个代码,但它不起作用。我使用php已经有一段时间了,如果变量为空,它不再接受。 有人可以帮我吗? 代码如下:

<?php
$current1 = ""; $current2 = "";
if (isset($_GET['mode'])) 
//mode not empty
{ 
  $mode = $_GET[ 'mode'];
  echo $mode."<br>";
    if ($mode = "index") { $current1 = "active";$current2="";}
    elseif ($mode = "contact") { $current2 = "active";$current1="";}
}
else 
//mode empty
{ 
 $current1 = "active";$current2="";      
}   
?>
PHP 的ISSET

评论

0赞 Rob Eyre 5/27/2023
请记住,相等性测试是用双等号完成的,否则PHP将其视为赋值。因此,您的代码将始终计算为 true,因为这是将值“index”分配给变量。==if ($mode = "index")$mode
0赞 Markus AO 5/27/2023
您的导航是否只有两个选项?此代码为实际导航提供了什么?如果您提供了更多上下文,可能会有更聪明的方法来执行此操作。
0赞 Nancy 5/27/2023
谢谢你的回答,但我找到了一个简单的解决方案,我只是把它放在“活动”应该在 a href 中的位置。<?php if(!isset($_GET['mode']) OR $_GET['mode']==“home”){ echo “active”;} ?>

答:

0赞 Rob Eyre 5/27/2023 #1

也许这可能是一种更简单的方法:

// default
$current1 = 'active';
$current2 = '';

if (!empty($_GET['mode']) && ($_GET['mode'] == 'contact')) {
    $current1 = '';
    $current2 = 'active';
}

评论

0赞 Nancy 5/27/2023
谢谢大家的建议,但我找到了一个简单的解决方案
-1赞 Akam 5/27/2023 #2

您的代码存在一些问题,导致其无法正常工作。让我们浏览一下它们并提供更正后的代码:

  • 比较运算符:在 if 语句中,您使用的是赋值运算符 =,而不是比较运算符 == 或 ===。要比较值,您需要使用 == 进行松散比较,或使用 === 进行严格比较。

  • 多个条件:在 if 语句中比较多个条件时,应使用逻辑运算符 && (AND) 或 ||(或)组合条件。

  • 变量赋值:活动类的赋值在代码中是相反的。当模式为“index”时,您已将其分配给 $current 1,当模式为“contact”时,您已将其分配给 $current 2。它应该是相反的。

下面是更正后的代码:

$current1 = "";
$current2 = "";

if (isset($_GET['mode'])) {
  $mode = $_GET['mode'];
  echo $mode . "<br>";
  
  if ($mode === "index") {
    $current1 = "active";
    $current2 = "";
  } elseif ($mode === "contact") {
    $current1 = "";
    $current2 = "active";
  }
} else {
  $current1 = "active";
  $current2 = "";
}

在此更新的代码中,我们使用 === 运算符进行严格比较。当模式为“index”时,我们将活动类分配给 $current 1,当模式为 “contact” 时,我们将活动类分配给 $current 2。现在,使用逻辑运算符正确分隔条件。

评论

0赞 Nancy 5/27/2023
谢谢你的回答,但我找到了一个简单的解决方案,我只是把它放在“活动”应该在 a href 中的位置。<?php if(!isset($_GET['mode']) OR $_GET['mode']==“home”){ echo “active”;} ?>
0赞 Debuqer 5/27/2023 #3

Isset 确定变量是否已声明且不同于 null

让我们看看官方的PHP示例

$var = '';

// This will evaluate to TRUE so the text will be printed.
if (isset($var)) {
    echo "This var is set so I will print.";
}

因此,您可以使用 empty 来检查 $_GET['mode'] 是否为空值,对于您的答案,您可以这样编码:

$modes = [
     'index' => '',
     'contact' => '',
];

$mode = (isset($_GET['mode']) and !empty($_GET['mode'])) ? $_GET['mode'] : 'index';
$modes[$mode] = 'active';

// in case you need your variable:
$current1 = $modes['index'];
$current2 = $modes['contact'];

评论

0赞 Nancy 5/27/2023
谢谢你的回答,但我找到了一个简单的解决方案,我只是把它放在“活动”应该在 a href 中的位置。<?php if(!isset($_GET['mode']) OR $_GET['mode']==“home”){ echo “active”;} ?>