2010-05-09 52 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