0

我正在尝试做的是基于 $_GET['page'] 变量的回显,但是它为我所有的导航菜单回显了这一点。我怎样才能让它只使用我所在的页面?这只是其中的 php 部分,实际的 html 代码位于每一行下方,但为简单起见,我没有包含它

<?php if($_GET['page'] == 'user_edit' || 'NULL'){ echo "<li class=\"current\">"; } else{ echo "<li>";} ?>
<?php if($_GET['page'] == 'manage' || 'add' || 'ftp'){ echo "<li class=\"current\">"; } else{ echo "<li>";} ?>
<?php if($_GET['page'] == 'bugs' || 'support' || 'notifications'){ echo "<li class=\"current\">"; } else{ echo "<li>";} ?>
4

2 回答 2

2

这不好:

if ($_GET['page'] == 'manage' || 'add')

在这种情况下,字符串 'add' 的计算结果为布尔值 true,这意味着条件每次都会触发。你想要这个:

if ($_GET['page'] == 'manage' || $_GET['page'] == 'add')

或这个:

if (in_array($_GET['page'], array('manage', 'add')))
于 2012-12-17T17:09:13.723 回答
1

它不是这样工作的。您的条件被评估为:

if ( ( $var == 'foo' ) || ( 'bar' ) || ( 'baz' ) )

注意上面的分组。这三个都是单独的表达式。这并不意味着“如果$var等于 'foo'、'bar' 或 'baz'”,它的意思是“如果$var等于 'foo' 为真或 'bar' 为真或 'baz' 为真”。

而且'bar'总是true

你需要:

if ($var == 'foo' || $var == 'bar' || $var == 'baz')

或者

if (in_array($var, array('foo', 'bar', 'baz'))
于 2012-12-17T17:09:17.593 回答