首頁 > 後端開發 > php教程 > 多如何優化寫法?

如何優化寫法?

WBOY
發布: 2023-03-03 09:22:01
原創
1547 人瀏覽過

多:

<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的用途,如果是為了判斷某個文章是否在某個分類因而需要去遍歷所有的分類,這樣的方式還是挺不合邏輯的。

前後端分離最好了

相關標籤:
php
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板