如何简化这个PHP代码?

时间:2011-05-06 13:52:55

标签: php

目前我正在尝试这个:

$sql_words = array("select","update","set", "from", "where", "and", "order by","insert into","delete");

echo str_replace($sql_words,
         array("<span style='color:red'>SELECT</span>","<span style='color:red'>UPDATE</span>",
          "<span style='color:green'>SET</span>", "<span style='color:green'>FROM</span>",
          "<span style='color:blue'>WHERE</span>","<span style='color:green'>AND</span>",
          "<span style='color:yellow'>ORDER BY</span>",
           "<span style='color:green'>INSERT INTO</span>",
           "<span style='color:green'>DELETE</span>"),
        $variable
        );

我希望它有点短,我希望颜色变成一个变量。

例如:在python中有列表理解,我会做这样的事情:

$newsql_words  = ["<span style='color:#'+randomcolor+'>'+$nice_sql_word+'</span>' for $nice_sql_word in $sql_words]

知道如何在php中执行此操作吗?

3 个答案:

答案 0 :(得分:2)

我认为删除所有重复的html代码并在打印时使用它很好。所以

foreach($sql_words as $word) {
    printf("<span style='color:%s'>%s</span>", $colors[array_rand($colors), strtoupper($word)]);
}

其中$sql_words是您的单词,而$colors是一个包含您想要随机化的所有颜色的数组。

这是最简单的事情,我可以在不知道应用这个的情况下出现。希望它有所帮助。

答案 1 :(得分:1)

根据我的理解,您只想为每个单词添加随机颜色?这将完成工作并将它们全部转换为大写:

$sql_words = array("select","update","set", "from", "where", "and", "order by","insert into","delete");
$colors = array('red','green','blue','yellow');
$color_max = count($colors) - 1;
$new_sql_words = array();
foreach($sql_words as $sql_word) {
   $new_sql_words[] = "<span style='color:".$colors[rand(0,$color_max)]."'>".strtoupper($sql_word)."</span>";
}

正如AJ在评论中指出的那样,你根本不应该执行str_replace

答案 2 :(得分:0)

如果您正在寻找一种生成随机颜色的方法,这里有一个很好的链接:

http://www.talkincode.com/generate-a-random-colour-with-php-170.html

$colour = rand(0,10000000);
$colour = dechex($colour);

就个人而言,我会在每个RGB颜色分量的间隔[0,255]上生成一个单独的随机值,以保证我有一个有效的颜色值,例如:

$colorR = dechex(rand(0,255));
$colorG = dechex(rand(0,255));
$colorB = dechex(rand(0,255));

// Normalize the string lengths to 2
$colorR = (strlen($colorR) == 2) ? $colorR : "0" . $colorR;
$colorG = (strlen($colorG) == 2) ? $colorG : "0" . $colorG;
$colorB = (strlen($colorB) == 2) ? $colorB : "0" . $colorB;

$color = $colorR . $colorG . $colorB;