-4

私は自分のphpにステートメントを持っています:

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

このタイプの二重比較を 2 番目の部分 (&& の後) で次のように記述する方法を学びたい:

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

しかし、それは機能していません。

私のウェブサイトでよく使用するPHPには、かなりのif-one-linersがたくさんあります。もう1つ学びたいと思います ))

4

6 に答える 6

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>
于 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

PHP 5.4 は、ini 構成に関係なく、デフォルトで短いタグをサポートします。

また、これが他のサーバーに配布される可能性が低いコードでない場合は、短いタグを使用しても安全ですが、短いタグをサポートしていないサーバーを変更すると、問題が発生します。

于 2012-04-05T12:14:19.880 に答える
0

構文が間違っているため、2 番目の比較タイプは機能しません。2 つのオブジェクトを「アタッチ」してから、if ステートメントでそれらを別のオブジェクトと比較することはできません。

于 2012-04-05T11:01:01.230 に答える
-2

配列を使用できます。または、したくない場合は、それを行う必要があります。

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