簡體   English   中英

關於簡化PHP語句的建議

[英]Advise on simplifying a PHP statement

我是PHP新手,正在為Joomla K2項目布局編寫模板文件。

我有一個配置為$extrafields[15]的“額外字段”,輸出為“是”,“否”或“”。 $extrafields[16]是一個文本字符串。

我有這段代碼,該代碼可以正常工作,但會提供有關如何簡化它的建議,因為我知道它可能有點粗糙!

if (!empty($extrafields[15])): 
    if ($extrafields[15] == "Yes") {
        echo "<span class=sgl-bold>Sponsored by:&nbsp;</span>"; 
    }

    if ($extrafields[15] == "Yes"):
        if (!empty($extrafields[16])):
            echo $extrafields[16]; 
        endif;
        echo "<br>";
    endif;
endif;

我傾向於做這樣的事情:

if(!empty($extrafields[15]) && !empty($extrafields[16])){ 
    if($extrafields[15] == "Yes"){
        echo "<span class=sgl-bold>Sponsored by:&nbsp;</span>"; 
        echo $extrafields[16]; 
        echo "<br>";
    } //endif not empty
} //endif yes

您可以通過一些簡單的調整使代碼更簡潔:

  • 盡可能消除多余的if子句,
  • 結合合理的if子句條件,以及
  • 不要在控制結構中使用其他語法來減少噪音。

以下代碼段保留了與原始嘗試相同的功能,但是更容易理解。

if (!empty($extrafields[15]) && 'Yes' === $extrafields[15]) {
    echo '<span class=sgl-bold>Sponsored by:&nbsp;</span>';
    if (!empty($extrafields[16])) {
        echo $extrafields[16];
    }
    echo '<br>';
}

就是說,從上下文來看,您可能希望使用此處發布的解決方案 BigScar。

為了使此片段更易於理解,您應該考慮使用數據結構(盡管我認為這是Joomla強迫您執行的操作):

  • 而不是像$extrafields[16]這樣的數字數組中的值,而要使用諸如$showSponsor類的語音變量名稱,並且
  • 而不是字符串值'Yes' ,'No'和''使用布爾值truefalsenull

記得:

在計算機科學中只有兩件難事:緩存無效和命名事物

if (@$extrafields[15] == "Yes") { 
    echo "<span class=sgl-bold>Sponsored by:&nbsp;</span>"; 
    echo @$extrafields[16]; 
    echo "<br>";
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM