1. 程式人生 > >php優化if多重巢狀語句

php優化if多重巢狀語句

在做公司erp系統的過程中,遇到了一個需求。

需要讀取資料庫內不同的表格,並對其表A的欄位,與表B的欄位進行判斷。

會用到多個判斷語句。而本人在編寫時由於沒想太多大部分用的都是if判斷語句來篩選。

最終形成多個if語句巢狀。

					if (!isset($factor_divide))
						{
							if($switch_state=='1') 
							{
								case '1':
							echo '<tr><th  colspan="2">' .$find_error. '<a href="https://item.taobao.com/item.htm?id=' .$PriceRow['storelink']. '" target="_blank" title='.$refresh_time['0'].'-'.$refresh_time['1'].'已重新整理'.'>' . $PriceRow['sales_type'] . _('Price') .'(' . locale_number_format($PriceRow['storeprice'],2) . ')' . ''.$PriceRow['company_state'].' </a></th>';
							}
								
if($switch_state=='2') 
							{
echo '<tr><th colspan="2">' .$find_error. '<a href="https://item.taobao.com/item.htm?id=' . $PriceRow['storelink']. '" target="_blank" title='.$refresh_time['0'].'-'.$refresh_time['1'].'更新資料有誤'.'>' . $PriceRow['sales_type'] . _('Price') .'(' . locale_number_format($PriceRow['storeprice'],2) . ')' . ''.$PriceRow['company_state'].' </a></th>';}
if($switch_state=='0') 
							{
echo '<tr><th colspan="2">' .$find_error. '<a href="https://item.taobao.com/item.htm?id=' . $PriceRow['storelink']. '" target="_blank" title='.'未更新'.'>' . $PriceRow['sales_type'] . _('Price') .'(' . locale_number_format($PriceRow['storeprice'],2) . ')' . ''.$PriceRow['company_state'].' </a></th>';}}
在本地執行時並沒有出現問題。

在測試伺服器上執行時,就會出現頁面嚴重卡頓。分析原因可能是讀取資料庫過程中多次獲取不同表會造成減慢。

修改了很多個地方發現並沒有提速。

直到後來想起網上有phper說過switch case速度會快點。所以把if巢狀換成switch case 。就不卡頓了,具體原理雖然還不太明白。

不過以此為鑑,儘量少用多重巢狀。

						if (!isset($factor_divide)) 
						{
							switch ($switch_state) 
							{
								case '1':
							echo '<tr><th  colspan="2">' .$find_error. '<a href="https://item.taobao.com/item.htm?id=' .$PriceRow['storelink']. '" target="_blank" title='.$refresh_time['0'].'-'.$refresh_time['1'].'已重新整理'.'>' . $PriceRow['sales_type'] . _('Price') .'(' . locale_number_format($PriceRow['storeprice'],2) . ')' . ''.$PriceRow['company_state'].' </a></th>';
									break;
								case 2:
							echo '<tr><th  colspan="2">' .$find_error. '<a href="https://item.taobao.com/item.htm?id=' . $PriceRow['storelink']. '" target="_blank" title='.$refresh_time['0'].'-'.$refresh_time['1'].'更新資料有誤'.'>' . $PriceRow['sales_type'] . _('Price') .'(' . locale_number_format($PriceRow['storeprice'],2) . ')' . ''.$PriceRow['company_state'].' </a></th>';
									break;								
								case 0:
							echo '<tr><th  colspan="2">' .$find_error. '<a href="https://item.taobao.com/item.htm?id=' . $PriceRow['storelink']. '" target="_blank" title='.'未更新'.'>' . $PriceRow['sales_type'] . _('Price') .'(' . locale_number_format($PriceRow['storeprice'],2) . ')' . ''.$PriceRow['company_state'].' </a></th>';
									break;

							}

						}
					    


相關推薦

php優化if多重語句

在做公司erp系統的過程中,遇到了一個需求。 需要讀取資料庫內不同的表格,並對其表A的欄位,與表B的欄位進行判斷。 會用到多個判斷語句。而本人在編寫時由於沒想太多大部分用的都是if判斷語句來篩選。 最終形成多個if語句巢狀。 if (!isset($facto

C#中多重IFIF

1. 多重IF結構 如果IF條件需要分成多種情況時,將要用到多重IF條件的用法,即else –if結構,這的語法如下: If(條件1)   { 語句塊1;    } Else if(條件2)   {       語句塊2;   } …. Else if(條件n)   {   語句塊n;   } [else

如何重構多重“箭頭型”程式碼

本文轉載自 酷 殼 – CoolShell 陳皓。 所謂箭頭型程式碼,基本上來說就是下面這個圖片所示的情況。 那麼,這樣“箭頭型”的程式碼有什麼問題呢?看上去也挺好看的,有對稱美。但是…… 關於箭頭型程式碼的問題有如下幾個: 1)我的顯示器不夠寬,箭頭型程式碼縮排太狠了,需

在Java中,如何跳出當前的多重迴圈?

在Java中,要想跳出多重迴圈,可以在外面的迴圈語句前定義一個標號,然後在裡層迴圈體的程式碼中使用帶有標號的break 語句,即可跳出外層迴圈。例如: 另外,我個人通常並不使用標號這種方式,而是讓外層的迴圈條件表示式的結果可以受到裡層迴圈體程式碼的控制,例如,要在二維陣列中查詢到某個數字。

Python_從零開始學習_(13) if

1.  if 的巢狀 elif 的應用場景是: 同時 判斷 多個條件,  所有的條件時 平級 的 在開發中,  使用 if 進行條件判斷,  如果希望 在條件成立的執行語句中 再 增加條件判斷, 就可以使用 if 的巢狀 if 的巢狀 的應用場景就是:  在之前條件

Sencha(Extjs) Ext.data.Store與Reader結合載入多重資料物件

Sencha(Extjs) Ext.data.Store與Reader結合載入多重巢狀資料物件 Ext.data.Readers常用於解析Model或Store中載入的資料,例如Ajax請求返回的資料(XML/JSON)。通過對每個Model的associations的屬性配置,Read

使用GSON解析多重的物件解析

全物件解析json   //這裡是最外層的物件資訊  JsonObject jsonObject = new JsonParser().parse(s).getAsJsonObject();                String msg = jsonObject.ge

利用遞迴來模擬多重迴圈.

盧卡斯的驅逐者大軍已經來到了赫柏的卡諾薩城,赫柏終於下定決心,集結了大軍,與驅逐者全面開戰。盧卡斯的手下有6名天之驅逐者,這6名天之驅逐者各賦異能,是盧卡斯的主力。為了擊敗盧卡斯,赫柏必須好好考慮如何安排自己的狂戰士前去迎戰。狂戰士的魔法與一些天之驅逐者的魔法屬性是相剋的,第i名狂戰士的魔法可以剋制的天之驅逐

java if else程式碼重構

java if else 如果巢狀很深,程式碼的易讀性差和冗餘,遇到多個判斷條件,適當提前 return,可以讓程式碼結構清晰。 我們下看一個反例,程式碼如下: public static boolean isInArea(double latitue, double l

【MySQL系列--優化1】——join優化

表達連線的語法允許巢狀連線。以下討論參見第13.2.9.2節“join語法”中描述的連線語法。 與SQL標準相比,table_factor的語法被擴充套件。後者僅接受table_reference,而不是一對括號內的列表。如果我們將table_referenc

解決el-dialog彈框多重,實現最好用的el-dialog

解決el-dialog彈框多重巢狀的問題。實現最好用的el-dialog       隨著vueJs的廣泛使用,Element元件逐漸深入人心。但是在使用element元件的時候,難免會遇到一些問題。本文跟大家分享:如何解決el-dialog彈框的多重巢狀問題

if else switch

<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> </head&

php中for迴圈問題 急,!!!

$m=3; $n=array(   '0'=>array('1'),   '1'=>array('1','2'),   '2'=>array('1','2','3'),   ); // $n=array( //  '0'=>array('1','2

徹底消滅if-else

一、背景 1.1 反面教材 不知大家有沒遇到過像橫放著的金字塔一樣的if-else巢狀: if (true) { if (true) { if (true) { if (true) { if (true) {

C#程式設計基礎第四課2:使用if語句if-else語句多重if語句if語句完成的C#控制檯小程式

知識點:基本算術運算、簡單if語句、if-else語句的練習。利用語句完成簡單C#控制檯程式。 1、運用if-else語句,判斷使用者輸入的年份是否是閏年 static void Main(string[] args) { /*

C#程式設計基礎第四課:c#中的邏輯運算子、多重if語句if語句的使用

知識點:邏輯運算子、多重if語句、巢狀if語句 1、邏輯運算子 練習1:邏輯或、邏輯與運算子的使用 本次計算機考試成績規定:筆試成績等於100分且機試成績大於等於60分,或筆試成績大於等於60分且機試成績等於100分,     輸出“成績優秀”,&

shell的基本語句(for迴圈,while迴圈,迴圈,if多重迴圈,case語句

1.for迴圈(遍歷) for 條件 do 動作 done 練習1:檢測當前172.25.254網段主機的狀態 [[email protected] mnt]# vim test.sh 1 #!/bin/bash 2 for ((IP=1;IP<=10

程式碼整潔之道1:反轉“if語句減少

程式碼片段1:("if"巢狀) void PrintName(Person p) { if (p != null) { if (p.Name != null) { Console.WriteLine(p.Name); } } } 程式碼片段2:

根據影象名字把一個大資料夾中影象分類(matlab中for迴圈中if語句

clear; close all; clc; inpath = 'G:\code\xianzhu\Z_CODE\SalBenchmark-master\Data\DataSet1\Saliency\*.png'; %%需要分類的資料夾路徑 %%分類後圖像儲存路徑%% CA_p

if語句以及條件運算子和條件表示式(初學者)

1、當if語句中的執行語句又是if語句時,則構成了if語句的巢狀情形。 其一般形式可表示為: if() {   if()……; } 或: if()   if()語句1;   else 語句2; else   if()語句3;   else 語句4; 注:if語句的巢狀不要太多,最好不