簡體   English   中英

有什么方法可以優化我的解決方案,從而實現更快,更優雅的方法?

[英]Any way to optimize my solution for a faster and more elegant approach?

在mySQL中,我有一列near_to ,在其中保存諸如Public Transportation,Business center類的條目

在前端,我想基於這些條目顯示一些圖標。 例如,在場內有Public TransportationBusiness CenterFitness Center等時的圖標。

到目前為止,這是我的解決方案。 我的問題是,有什么方法可以使此操作更快,更優雅?

if (strpos($req['near_to'],'Pub') !==false) {
    echo '<li>public transportation icon</li>';
}
if (strpos($req['near_to'],'Fitn') !==false) {
    echo '<li>fitness icon</li>';
}
if (strpos($req['near_to'],'Busi') !==false) {
    echo '<li>business icon</li>';
}

我用preg_replace組成了一個小片段。 這樣,您可以在一個數組上定義映射,並通過在數組本身上運行preg_replace在一個語句中獲得最終結果。

<?php 

$subject = "Public Transportation";
//$subject = "Business center";

$patterns = array(
    "/Pub.*/" => "<li>public transportation icon</li>",
    "/Fitn.*/" => "<li>fitness icon</li>",
    "/Busi.*/" => "<li>business icon</li>"
    );

$html = preg_replace(array_keys($patterns), array_values($patterns), $subject);

echo($html);

如果您想為多個模式之一匹配主題,則更新 ,然后模式鍵必須不同。 上例中patterns數組中的鍵與整個字符串匹配,因此,如您在注釋中所說,將僅返回一個圖標。

如果我們按以下方式更改模式,您將在html結果中看到多個圖標。 我假設字符串是常量,並且用“,”分隔,其中“,”是可選的,因此“?” 在模式中。

<?php 

$subject = "Public Transportation,Fitness Center,Business Center"; //$subject = "Business center";

$patterns = array(
    "/Public Transportation,?/" => "<li>public transportation icon</li>",
    "/Fitness Center,?/" => "<li>fitness icon</li>",
    "/Business Center,?/" => "<li>business icon</li>"
    );

$html = preg_replace(array_keys($patterns), array_values($patterns), $subject);

echo($html);

以上將返回

<li>public transportation icon</li><li>fitness icon</li><li>business icon</li>

暫無
暫無

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

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