首頁  >  文章  >  後端開發  >  多如何優化寫法?

如何優化寫法?

WBOY
WBOY原創
2016-12-05 13:44:171539瀏覽

多:

<code><?php if ( in_category('10') ) echo'<p class="class1"><span class="icon-home"></span></p>'; ?>
<?php if ( in_category('25') ) echo'<p class="class2"><span class="icon-cat"></span></p>'; ?>
<?php if ( in_category('38') ) echo'<p class="class3"><span class="icon-dog"></span></p>'; ?>
<?php if ( in_category('44') ) echo'<p class="class4"><span class="icon4"></span></p>'; ?>
<?php if ( in_category('50') ) echo'<p class="class5"><span class="icon5"></span></p>'; ?>
<?php if ( in_category('61') ) echo'<p class="class6"><span class="icon6"></span></p>'; ?>
</code>

如何優化寫法?謝謝

*又編輯了一下,in_category 和 後面的 class 其實是沒有規律的。

回覆內容:

多:

<code><?php if ( in_category('10') ) echo'<p class="class1"><span class="icon-home"></span></p>'; ?>
<?php if ( in_category('25') ) echo'<p class="class2"><span class="icon-cat"></span></p>'; ?>
<?php if ( in_category('38') ) echo'<p class="class3"><span class="icon-dog"></span></p>'; ?>
<?php if ( in_category('44') ) echo'<p class="class4"><span class="icon4"></span></p>'; ?>
<?php if ( in_category('50') ) echo'<p class="class5"><span class="icon5"></span></p>'; ?>
<?php if ( in_category('61') ) echo'<p class="class6"><span class="icon6"></span></p>'; ?>
</code>

如何優化寫法?謝謝

*又編輯了一下,in_category 和 後面的 class 其實是沒有規律的。

<code>for($i=1; $i<7; $i++) {
    if(in_category($i)) {
        echo "<p class=\"class{$i}\"></p>";
    }
}</code>

對於程式碼優化我沒有太多見解,留給其他小夥伴補充吧


更新:
再次優化了

<code>$arr = array(
    10=>'<p class="class1"><span class="icon-home"></span></p>',
    25=>'<p class="class2"><span class="icon-cat"></span></p>', 
    38=>'<p class="class3"><span class="icon-dog"></span></p>', 
    44=>'<p class="class4"><span class="icon4"></span></p>', 
    50=>'<p class="class5"><span class="icon5"></span></p>', 
    61=>'<p class="class6"><span class="icon6"></span></p>'
);
function inCatToHtml($arr) {
    while (list($key, $value) = each($arr)) {
        if(in_category($key)) {
            echo $arr[$key];
        }
    }
}
inCatToHtml($arr);</code>

echo 可以根據實際情況最佳化,最後回傳一個 in_category 的陣列HTML,然後統一處理

<code><?php

foreach(range(1,6) as $categoryNum) {
    if(in_category($categoryNum)) {
        echo '<p class="class"'.$categoryNum.'"></p>';
    }
}</code>

不過感覺html裡面混寫php很low...

推薦

  1. php模板引擎。

  2. 前端單頁或是一個簡單的js引擎。

======== 噗,題主修改了下,我也改下 ==========

<code><?php

$categoryIcon = [
    10 => 'icon-home',
    ....
];

具体就不写了...和上面一样。</code>

<code><?php
 
$num = count(['1','2','3','4','5','6']);

for( $i=0; $i<$num; $i++ )
{
    if(in_category($num[$i]))
    {
        echo "<p class=class".$i."></p>";
    }
}
?></code>

<code><?php if ($currentCategory = Category::currentCategory()): ?>
<p class="<?=$currentCategory->labelClass?>"><span class="<?=$currentCategory->iconClass?>"></span></p>
<?php endif; ?></code>

表現層只關心表現就行了,至於一共有多少個category,如何判斷當前頁面的category,每個category的class是什麼,無論你準備放db也好,寫數組配置也好,都封裝到Category類裡面去。

上面寫了這麼多,我還是覺得樓主原先的寫法一目了然

覺得樓主這個多個if的判斷條件直接用switch比較適合吧。不知道樓主這個in_category方法裡面的程式碼是什麼樣的,就大膽改變一下這個方法吧。方法裡用switch

<code>function in_category( $num ) {
    switch ($num) {
        case '10':
            echo'<p class="class1"><span class="icon-home"></span></p>';
            break;
        case '25':
            echo'<p class="class2"><span class="icon-cat"></span></p>';
            break;
        case '38':
            echo'<p class="class3"><span class="icon-dog"></span></p>';
            break;
        case '44':
            echo'<p class="class4"><span class="icon4"></span></p>';
            break;
        default:
            echo '';
            break;
    }
}</code>

然後直接in_category( 10 )可以嗎?

假設題主是在判斷文章屬於哪個分類就輸出某個ICON
那麼你可以先對分類做一個定義,

<code class="php">$categroies = [
    10=>['class'=>'icon-home'],
    25=>['class'=>'icon-dog'],
    38=>['class'=>'icon-cat'],
    44=>['class'=>'icon4']
    //当然这里的数据可以是从数据库里封装好的
];
//等待输出的html
$html = '';
$class_i = 1;
foreach($categories as $key => $category) {
    if (in_category($key)) {
        $html .= '<p class="class' . ($class_i++) . '"><span class="' . $category['class'] . '"></span></p>';
    }
}
echo $html;</code>

這裡不知道in_category的用途,如果是為了判斷某個文章是否在某個分類因而需要去遍歷所有的分類,這樣的方式還是挺不合邏輯的。

前後端分離最好了

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn