压缩多个else if语句,从表中引用它们?

时间:2010-05-09 04:53:44

标签: php if-statement

您好我要在我的代码(PHP)中输入大约500个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]

我也(幸运的是)有一个表显示第一列中的颜色,下一列显示其中500个的rgb值...如何使用它来节省键入所有其他if语句的时间?一些我如何引用表文件(在excel中制作,我猜我必须将它保存为.csv?)

3 个答案:

答案 0 :(得分: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];
}

答案 1 :(得分:1)

为什么不在所有rgb 结束上打印if-else

坦率地说,你的语法是可怕的,这根本不是有效的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' ];

答案 2 :(得分: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];