php变量相等比较简短的方法

时间:2012-04-05 10:57:43

标签: php if-statement comparison

我在我的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,我经常在我的网站上使用,我想再学习一次))

6 个答案:

答案 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"';