2012-11-05 42 views
0

我的代碼從數據庫中選擇,寫出信息,然後運行一個else if循環來決定什麼樣的代碼輸出:?有沒有更簡潔的寫作方式?

<?php 

echo '<p>the loop<p><br> 
<p>Accreditations</p>'; 

     if ($fields['accreditations1']==1){echo 'HTML CODE 1';} else { 
     if ($fields['accreditations1']==2){echo 'HTML CODE 2';} else { 
     if ($fields['accreditations1']==3){echo 'HTML CODE 3';} else { 
     if ($fields['accreditations1']==4){echo 'HTML CODE 4';} else { 
     if ($fields['accreditations1']==5){echo 'HTML CODE 5';} else { 
     if ($fields['accreditations1']==6){echo 'HTML CODE 6';} else { 
     if ($fields['accreditations1']==7){echo 'HTML CODE 7';} else { 
     if ($fields['accreditations1']==0){echo '';} 

     if ($fields['accreditations2']==1){echo 'HTML CODE 1';} else { 
     if ($fields['accreditations2']==2){echo 'HTML CODE 2';} else { 
     if ($fields['accreditations2']==3){echo 'HTML CODE 3';} else { 
     if ($fields['accreditations2']==4){echo 'HTML CODE 4';} else { 
     if ($fields['accreditations2']==5){echo 'HTML CODE 5';} else { 
     if ($fields['accreditations2']==6){echo 'HTML CODE 6';} else { 
     if ($fields['accreditations2']==7){echo 'HTML CODE 7';} else { 
     if ($fields['accreditations2']==0){echo '';} 

     if ($fields['accreditations3']==1){echo 'HTML CODE 1';} else { 
     if ($fields['accreditations3']==2){echo 'HTML CODE 2';} else { 
     if ($fields['accreditations3']==3){echo 'HTML CODE 3';} else { 
     if ($fields['accreditations3']==4){echo 'HTML CODE 4';} else { 
     if ($fields['accreditations3']==5){echo 'HTML CODE 5';} else { 
     if ($fields['accreditations3']==6){echo 'HTML CODE 6';} else { 
     if ($fields['accreditations3']==7){echo 'HTML CODE 7';} else { 
     if ($fields['accreditations3']==0){echo '';} 

     echo '<br />'; 

     if ($fields['accreditations4']==1){echo 'HTML CODE 1';} else { 
     if ($fields['accreditations4']==2){echo 'HTML CODE 2';} else { 
     if ($fields['accreditations4']==3){echo 'HTML CODE 3';} else { 
     if ($fields['accreditations4']==4){echo 'HTML CODE 4';} else { 
     if ($fields['accreditations4']==5){echo 'HTML CODE 5';} else { 
     if ($fields['accreditations4']==6){echo 'HTML CODE 6';} else { 
     if ($fields['accreditations4']==7){echo 'HTML CODE 7';} else { 
     if ($fields['accreditations4']==0){echo '';} 

     if ($fields['accreditations5']==1){echo 'HTML CODE 1';} else { 
     if ($fields['accreditations5']==2){echo 'HTML CODE 2';} else { 
     if ($fields['accreditations5']==3){echo 'HTML CODE 3';} else { 
     if ($fields['accreditations5']==4){echo 'HTML CODE 4';} else { 
     if ($fields['accreditations5']==5){echo 'HTML CODE 5';} else { 
     if ($fields['accreditations5']==6){echo 'HTML CODE 6';} else { 
     if ($fields['accreditations5']==7){echo 'HTML CODE 7';} else { 
     if ($fields['accreditations5']==0){echo '';} 

     if ($fields['accreditations6']==1){echo 'HTML CODE 1';} else { 
     if ($fields['accreditations6']==2){echo 'HTML CODE 2';} else { 
     if ($fields['accreditations6']==3){echo 'HTML CODE 3';} else { 
     if ($fields['accreditations6']==4){echo 'HTML CODE 4';} else { 
     if ($fields['accreditations6']==5){echo 'HTML CODE 5';} else { 
     if ($fields['accreditations6']==6){echo 'HTML CODE 6';} else { 
     if ($fields['accreditations6']==7){echo 'HTML CODE 7';} else { 
     if ($fields['accreditations6']==0){echo '';} 

     ?> 

首先,我需要做一些事情來關閉IFS?還有一個更簡單的方法呢?

+2

看到的東西是不可見的......事實上,爲什麼使用功能時,可以輸入快速? – raina77ow

+0

GOGGLES他們什麼都不做!考慮使用[開關](http://php.net/manual/en/control-structures.switch.php),而不是 –

回答

2

使用switch statement,這樣

switch($fields['accreditations1']) { 
    case 1: echo 'HTML CODE 1'; break; 
    case 2: echo 'HTML CODE 2'; break; 
    case 3: echo 'HTML CODE 3'; break; 
    case 4: echo 'HTML CODE 4'; break; 
    case 5: echo 'HTML CODE 5'; break; 
    case 6: echo 'HTML CODE 6'; break; 
    case 7: echo 'HTML CODE 7'; break; 
    case 0: echo ''; 
} 

我認爲,這不是實際輸出。如果我錯了,你應該考慮爲此寫一個單獨的函數!

+0

事實上,如果它確實是OMG的OMG 1,2,3等等字符串來回顯,即使切換也會被認爲是DailyWTF的資料 - 當然,這個問題遠不如問題中給出的。 – raina77ow

1

試試這個,使用for循環,

for($i=1; $i<=count($fields); $i++) { 
    if($fields['accreditations'.$i] > 0 && $fields['accreditations'.$i] <= 7) 
    echo 'HTML CODE ' $fields['accreditations'.$i]; 
} 
+1

但是,如果這個表達式是'8',例如呢? )嚴格地說,你必須檢查'<= 7'是否與這個代碼完全匹配。在這個循環的中間還有一個
... – raina77ow

+1

是的,我想寫這樣的東西,但我懷疑所有這些HTML片段確實如此。我認爲這只是一個例子。 – GolezTrol

+0

@ raina77ow:同意,考慮到這是整個代碼。 –

1

我覺得你有一個'<p>Accreditations</p>後太多。

除此之外,你可以使用switch語句來縮短這段代碼。

您還可以使用:

if (condition) {} 
else if (othercondition) {} 
elseif (thirdcondition {} 
else {} 

注意,如果存在其他的內部沒有的其他括號。你可以寫else ifelseif,兩者的含義相同。

這在交換機不工作的情況下特別有用。在你的情況下,只需使用一個開關。

+0

事實上,從現在開始,我有了使用5.3的奢望,有時我會在關聯數組中表示開關(''scenario1'=> function(){behaviour1;}'等)。它允許稍後重用代碼。 – raina77ow

+0

@ raina77ow不錯的訣竅,但它不會以任何方式幫助這些代碼。 – GolezTrol

相關問題