2011-05-06 83 views
0

目前我想这一点:如何简化这个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这样做吗?

+0

您正在比较两种不同的操作。 PHP操作正在对现有字符串进行替换。你的Python代码只是使用字符串格式和列表理解生成一个新的字符串列表 - **不是**替换现有的字符串。 – 2011-05-06 14:08:53

回答

2

我认为这是很好的去除所有重复的HTML代码,只需使用它当你打印它时。所以

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

其中$sql_words是你的话,$colors是所有要随机颜色的数组。

这是最简单的事情,我可以不知道这个应用程序。希望能帮助到你。

+1

只有一个想法:'printf('''(带倒排引号) – dynamic 2011-05-07 09:03:59

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

0

如果你正在寻找一种方式来生成一个随机的颜色,这里是一个很好的链接:

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

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

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

$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;