-4

我在我的 php 中有一个声明:

<? if(isset($_GET['mod']) && ($_GET['mod'] == "category" || $_GET['mod'] == "catalog")) echo 'id="active"'; ?>

我想学习如何在第二部分(在&&之后)编写这种类型的双重比较,如下所示:

<? if(isset($_GET['mod']) && $_GET['mod'] == ("category" || "catalog")) echo 'id="active"';?>

但它不起作用。

php 中有很多漂亮的 if-one-liners,我经常在我的网站中使用它们,我想再学习一个))

4

6 回答 6

3

你可以这样做:

if( isset($_GET['mod']) && in_array( $_GET['mod'], array( "category", "catalog") )

正如@RepWhoringPeeHaa 建议的那样,停止使用短标签,因为某些服务器可能不支持它们。

同样如下所示,您应该尝试将 PHP 代码分离到 html 之外,如下所示:

<?php

    $active = '';

    $mods = array( "category", "catalog" );
    if ( isset( $_GET['mod'] ) && in_array( $_GET['mod'], $mods ) ){
       $active = 'id="active"';
    }

?>

// html
<div <?php echo $active; ?>></div>
于 2012-04-05T11:01:01.743 回答
2
<?php 
if(isset($_GET['mod']) && in_array($_GET['mod'], array("category", "catalog"))) {
    echo 'id="active"';
}
于 2012-04-05T11:00:50.560 回答
1

第一:停止使用简短的 php 标签。用途:<?php。因为当您使用短语法时,您依赖于要启用的某些服务器设置(这是一件坏事)。

如果你想让你的代码更好的可读性和可维护性,你可以这样做:

<?php

$values = array('category',
                'catalog',
               );

if(isset($_GET['mod']) && in_array($_GET['mod'], $values)) {
    echo 'id="active"';
}

这样它的可读性和可维护性都更好。如果您想检查另一个值,您只需将一个项目添加到数组中,它就会继续工作。

请记住,重要的不是编写最短的代码,重要的是最好的可维护代码。

于 2012-04-05T11:02:14.367 回答
0

第二种比较类型不应该工作,因为语法错误。您不能“附加”两个对象,然后将它们与 if 语句中的另一个对象进行比较。

于 2012-04-05T11:01:01.230 回答
0

PHP 5.4 默认支持短标签,不管 ini 配置如何。

此外,如果这不是可能分发到其他服务器的代码,则使用短标签是安全的,但是,如果您要更改不支持短标签的服务器,您将遇到麻烦。

于 2012-04-05T12:14:19.880 回答
-2

你可以使用数组,或者如果你不想你必须这样做:

if(isset($_GET['mod'])  AND  (($_GET['mod'] == "category" ) OR  ($_GET['mod'] == "catalog"))) echo 'id="active"';
于 2012-04-05T11:08:56.940 回答