2011-05-06 182 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;