如果$ _GET无法正常工作

时间:2012-12-17 17:05:34

标签: php

我想要做的是基于$ _GET ['页面']变量回显,但是它反映了我的所有导航菜单。我怎样才能使用我所在的页面?这只是它的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>";} ?>

2 个答案:

答案 0 :(得分:2)

这不好:

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

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

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

或者这个:

if (in_array($_GET['page'], array('manage', 'add')))

答案 1 :(得分: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'))