我在我的php中有一个声明:
<? if(isset($_GET['mod']) && ($_GET['mod'] == "category" || $_GET['mod'] == "catalog")) echo 'id="active"'; ?>
我想学习如何在第二部分(&amp;&amp;)之后编写这种类型的双重比较,如下所示:
<? if(isset($_GET['mod']) && $_GET['mod'] == ("category" || "catalog")) echo 'id="active"';?>
但它不起作用。
在PHP中有很多非常漂亮的if-one-liners,我经常在我的网站上使用,我想再学习一次))
答案 0 :(得分:3)
你可以这样做:
if( isset($_GET['mod']) && in_array( $_GET['mod'], array( "category", "catalog") )
正如@RepWhoringPeeHaa建议的那样,停止使用短标签,因为某些服务器可能不支持它们。
同样如下所示,您应该尝试将html之外的PHP代码分开,如下所示:
<?php
$active = '';
$mods = array( "category", "catalog" );
if ( isset( $_GET['mod'] ) && in_array( $_GET['mod'], $mods ) ){
$active = 'id="active"';
}
?>
// html
<div <?php echo $active; ?>></div>
答案 1 :(得分:2)
<?php
if(isset($_GET['mod']) && in_array($_GET['mod'], array("category", "catalog"))) {
echo 'id="active"';
}
答案 2 :(得分:1)
首先:停止使用短的php标签。使用:<?php
。因为当您使用短语法时,您需要启用一些服务器设置(这是一件坏事)。
如果您希望使代码更易于阅读和维护,可以执行以下操作:
<?php
$values = array('category',
'catalog',
);
if(isset($_GET['mod']) && in_array($_GET['mod'], $values)) {
echo 'id="active"';
}
这样它的可读性更好,维护方式更好。如果你想检查另一个值,你只需要在数组中添加一个项目,它就会继续工作。
请记住,它并没有编写最重要的代码,因为它是最重要的可维护代码。
答案 3 :(得分:0)
第二种comprasion类型不应该起作用,因为语法错误。您不能“附加”两个对象,然后将它们与if语句中的另一个对象进行比较。
答案 4 :(得分:0)
默认情况下,PHP 5.4支持短标记,无论ini配置如何。
此外,如果这不是可能分发给其他服务器的代码,那么使用短标签是安全的,但是,如果您要更换不支持短标签的服务器,您将遇到麻烦。
答案 5 :(得分:-2)
你可以使用数组,或者你不想要你必须这样做:
if(isset($_GET['mod']) AND (($_GET['mod'] == "category" ) OR ($_GET['mod'] == "catalog"))) echo 'id="active"';