2012-04-05 95 views
-4

我有我的PHP語句: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"';?> 

但它不工作。

有很多漂亮的if-單行PHP中,我經常在我的網站上使用,我想學習一種更))

+4

請停止使用短php標記。 – PeeHaa 2012-04-05 10:59:18

回答

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> 
+0

謝謝,它有點短。是短標籤不好,會減少它們的使用。謝謝 ! ('set'($ _ GET ['mod'])&& in_array($ _ GET ['mod'],array(「catalog」,「category」)))echo'id =「active」';?> – remort 2012-04-05 11:38:48

+0

<?php> ---這對我有用,謝謝 – remort 2012-04-05 11:47:04

+0

請閱讀我上面的編輯 – scibuff 2012-04-05 11:48:27

2
<?php 
if(isset($_GET['mod']) && in_array($_GET['mod'], array("category", "catalog"))) { 
    echo 'id="active"'; 
} 
0

第二comprasion類型應該不行的,因爲語法錯誤。您不能「附加」兩個對象,然後將它們與if語句中的另一個對象進行比較。

1

第一:停止使用短的PHP標記。使用:<?php。因爲當你使用簡短的語法時,你需要啓用某些服務器設置(這是一件壞事)。

如果你想使你的代碼更好的可讀性和可維護性,你可以這樣做:

<?php 

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

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

這樣它,它的方式更好可讀性和更好的方式維護。如果你想檢查另一個值,你只需要添加一個項目到數組中,它將繼續工作。

請記住,它並不是編寫最重要的代碼,而是最重要的代碼,它是最重要的可維護代碼。

+0

這對於HTML模板中的簡短內聯PHP邏輯是完全不可取的。我需要將PHP代碼簡單的單行插入到HTML模板中,以使其看起來精確。但感謝in_array())) – remort 2012-04-05 11:36:13

+0

不,它不是。同樣如我所說,你不應該把所有東西都劃成一條短線。這對於其他人(以及你自己)來說很難維護代碼並看看發生了什麼。 – PeeHaa 2012-04-05 11:38:07

+1

你想要做的是將邏輯完全保留在html模板之外,例如做'$ active ='id ='active'';'在html代碼之外,然後執行'echo $ active;'就地...這樣你就可以保持php和html的readale – scibuff 2012-04-05 11:47:23

-2

你可以使用數組或者,如果你不想,你必須這樣做:

if(isset($_GET['mod']) AND (($_GET['mod'] == "category") OR ($_GET['mod'] == "catalog"))) echo 'id="active"'; 
+2

你在告訴我你真的在使用'AND'和'OR'嗎? – PeeHaa 2012-04-05 11:14:48

+0

有很多方法可以做到這一點,這是一種方法,你知道,如果你希望你的代碼結構是可讀和良好的,你必須使用AND,OR或者&&,||更好的情況。 – ermya 2012-04-05 11:20:30

0

PHP 5.4支持短標籤在默認情況下,無論INI配置。另外,如果這不是可能分發到其他服務器的代碼,那麼使用短標籤是安全的,但是,如果要更改不支持短標籤的服務器,您將遇到麻煩。