2010-05-09 58 views
1

嗨,我是要輸入一些500 else if語句到我的代碼(PHP),它有相同的編碼每個:凝聚多個其他if語句,引用他們從一個表?

if (color=White); 
    rgb = 255-255-255; 
    print rgb; 
else if (color=Black); 
    rgb = 0-0-0; 
    print rgb; 
else if (color=Red); 
    rgb = 255-0-0; 
    print rgb; 
else if (color=Blue); 
    rgb = 0-0-255; 
    print rgb; 
[the list keeps going] 

我也(幸運)有一個顯示的顏色在第一個表列和rgb的價值在下一列中的500人......我怎麼用這個來節省時間輸入所有這些如果陳述?我有些怎麼也得引用表文件(在Excel中製作,我猜我必須將它保存爲.csv文件?)

+3

呃,你所有的if語句都以分號結尾? – BalusC 2010-05-09 04:58:06

+0

嗨,我只是想讓大家明白,我剛剛在現場輸入了這段代碼,它顯然不是PHP,變量不僅僅是顏色,它們實際上是產品ID,然後是雜貨店項目。 ID都是十六進制的......這只是爲了演示目的,謝謝。 另外我用於CSV,沒有數組等。 – Haskella 2010-05-09 05:56:37

回答

3

最好的辦法是把這些數據(顏色名稱,RGB值)到數據庫中,然後就去做:

SELECT rgb FROM colors WHERE color = 'red'; 

如果您無法執行數據庫,則可以使用fgetcsv()並將CSV數據讀取到數組中。然後,只需輸出:

echo $colors[$color]; 

要讀取一個CSV文件到一個數組中,使用類似:

//assuming the first field is color and the second rgb 
$fh = fopen($file, 'r'); 
while (($row = fgetcsv($fh)) !== FALSE) { 
    $colors[$row[0]] = $row[1]; 
} 
+0

Hrm,我在數據庫中看到了您的觀點,但是與CSV有明顯的優勢嗎?我完全不瞭解MySQL。在速度/帶寬方面呢? 感謝這是我正在尋找的答案,希望它能奏效! – Haskella 2010-05-09 05:59:10

+0

優點是,使用CSV,您可以將PHP變成「數據庫」 - 每次請求時將所有數據加載到內存中。這就是數據庫的用途,這就是數據庫的效率。除非數據集很小,否則使用數據庫存儲信息會更快(說到腳本執行時間)。 – 2010-05-10 14:10:46

1

你爲什麼不打印rgb在所有的年底if-else s

坦率地說,你的語法是可怕的,這根本就是無效的PHP。 此外,您應該使用echo,而不是print

if ($color=='White') 
    $rgb = '255-255-255'; 
else if ($color=='Black') 
    $rgb = '0-0-0'; 
else if ($color=='Red') 
    $rgb = '255-0-0'; 
else if (color=='Blue') 
    $rgb = '0-0-255'; 
[the list keeps going] 
echo $rgb; 

我會做的是這樣的一個數組存儲鍵 - 值對:

$colors = array('white' => '255-255-255', 'black' => '0-0-0', 'blue' => '0-0-255'); 

然後,您可以通過提供訪問該數組中的RGB值關鍵,即顏色字符串:$blueRGB = $colors[ 'blue' ];

+1

謝謝我重視您的回覆,但它不只是PHP,我一般在談論條件陳述。 – Haskella 2010-05-09 05:53:51

0

您應該使用數組。

$colors = array(
    'white' => '255-255-255', 
    'black' => '0-0-0', 
    // etc. 
); 
echo $colors[$color]; 

如果你有一個CSV文件,你可以使用fgetcsv

$colors = array(); 
$handle = fopen('colors.csv', 'r'); 
while ($row = fgetcsv($handle, 10000)) 
    $colors[$row[0]] = $row[1]; 
echo $colors[$color]; 
+0

感謝您的回覆 – Haskella 2010-05-09 05:59:45