如何简化这个PHP代码?
问题描述:
目前我想这一点:如何简化这个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这样做吗?
答
我认为这是很好的去除所有重复的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
答
从我的理解中,您只是想为每个单词添加随机颜色?这将做的工作,并将其转换全部为大写字母,以及:
$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
。
答
如果你正在寻找一种方式来生成一个随机的颜色,这里是一个很好的链接:
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;
您正在比较两种不同的操作。 PHP操作正在对现有字符串进行替换。你的Python代码只是使用字符串格式和列表理解生成一个新的字符串列表 - **不是**替换现有的字符串。 – 2011-05-06 14:08:53