PHP循环未根据div颜色代码打印颜色名称
我试图根据循环中的颜色代码来回显div的颜色名称,但它似乎不起作用。这就是我得到的: 框的颜色应与其中的文本相关联。我做错什么了吗?这是我目前的代码:PHP循环未根据div颜色代码打印颜色名称,php,Php,我试图根据循环中的颜色代码来回显div的颜色名称,但它似乎不起作用。这就是我得到的: 框的颜色应与其中的文本相关联。我做错什么了吗?这是我目前的代码: $availColour = array("#F00","#FF0","#0D0"); for ($i = 1; $i <= 9; $i++) { $Monday = $availColour[array_rand($availColour, 1)]; echo '<div class="inner
$availColour = array("#F00","#FF0","#0D0");
for ($i = 1; $i <= 9; $i++) {
$Monday = $availColour[array_rand($availColour, 1)];
echo '<div class="innerTbl" style="width: 50px; float: left;
background-color: '.$Monday.'">';
if ($Monday = "#F00") {
echo "Red";
}
elseif ($Monday = "#FF0") {
echo "Green";
}
elseif ($Monday = "#0D0") {
echo "Yellow";
}
echo "</div>";
$availColour=array(“#F00”、“#FF0”、“#0D0”);
对于($i=1;$i而言,原因是您将=
和=
混淆了
if ($Monday = "#F00") {
应该是
if ($Monday == "#F00") {
为了防止将来发生这种情况,许多人都这样做
if ("#F00" == $Monday) {
一开始可能看起来很尴尬,但它可以防止你把它们混在一起,就好像你把你的陈述打错了一样
if ("#F00" = $Monday) {
你的解释器会因为一个致命的错误而死亡,抱怨你不能赋值给一个常数,诸如此类——这实际上会让你的错误更加明显
顺便说一句,#FF0
是黄色的,#0D0
是绿色的,看起来您也交换了文本。原因是您混淆了=
和=
if ($Monday = "#F00") {
应该是
if ($Monday == "#F00") {
为了防止将来发生这种情况,许多人都这样做
if ("#F00" == $Monday) {
一开始可能看起来很尴尬,但它可以防止你把它们混在一起,就好像你把你的陈述打错了一样
if ("#F00" = $Monday) {
你的解释器会因为一个致命的错误而死亡,抱怨你不能赋值给一个常数,诸如此类——这实际上会让你的错误更加明显
顺便说一句,#FF0
为黄色,#0D0
为绿色,看起来您也交换了文本。检查您的条件-您需要使用==来测试相等性。目前,您的条件正在赋值,因此第一个条件的计算结果总是true
试试这个:
if ($Monday == "#F00") {
echo "Red";
}
elseif ($Monday == "#FF0") {
echo "Green";
}
elseif ($Monday == "#0D0")
{
echo "Yellow";
}
检查您的条件-您需要使用==来测试是否相等。当前,您的条件正在赋值,因此第一个条件的计算结果将始终为true
试试这个:
if ($Monday == "#F00") {
echo "Red";
}
elseif ($Monday == "#FF0") {
echo "Green";
}
elseif ($Monday == "#0D0")
{
echo "Yellow";
}
您混淆了相等=
和赋值=
。当测试两个或多个值的相等时,您使用两个=
(除非您也在测试类型,在这种情况下,您将使用=
)。此外,如果将初始数组用作书面颜色名称的查找,则可以简化代码:
$i = 9;
$c = array(
"Red" => "#F00",
"Green" => "#FF0",
"#0D0"
);
while ( $i-- ) {
$hex = $c[ array_rand( $c ) ];
$str = array_search( $hex, $c ) ?: "Unknown" ;
echo "<div style='background-color:{$hex}'>{$str}</div>";
}
$i=9;
$c=数组(
“红色”=>“#F00”,
“绿色”=>“#FF0”,
“#0D0”
);
而($i--){
$hex=$c[array_rand($c)];
$str=数组搜索($hex,$c)?:“未知”;
回声“{$str}”;
}
上述内容将使用CSS中的十六进制值,并且(如果存在)div
本身中的可读字符串。如果没有提供字符串(例如#0D0
),则将替换“未知”
三元运算符的这种特殊用法需要PHP版本5.3+。您混淆了等式
=
和赋值=
。当测试两个或多个值的等式时,您使用两个==
(除非您同时测试类型,在这种情况下,您将使用=
)。此外,如果将初始数组用作书面颜色名称的查找,则可以简化代码:
$i = 9;
$c = array(
"Red" => "#F00",
"Green" => "#FF0",
"#0D0"
);
while ( $i-- ) {
$hex = $c[ array_rand( $c ) ];
$str = array_search( $hex, $c ) ?: "Unknown" ;
echo "<div style='background-color:{$hex}'>{$str}</div>";
}
$i=9;
$c=数组(
“红色”=>“#F00”,
“绿色”=>“#FF0”,
“#0D0”
);
而($i--){
$hex=$c[array_rand($c)];
$str=数组搜索($hex,$c)?:“未知”;
回声“{$str}”;
}
上述内容将使用CSS中的十六进制值,并且(如果存在)div本身中的可读字符串。如果没有提供字符串(例如#0D0
),则将替换“未知”
三元运算符的这种特殊用法需要PHP版本5.3+。您使用的是赋值
=
而不是比较=
所以改变
if($Monday=“#F00”)
进入
if($Monday==“#F00”)
实现这一点的更好方法是根本不使用比较
<?php
$availColour = array("#F00"=>"Red","#FF0"=>"Green","#0D0"=>"Yellow");
for ($i = 1; $i <= 9; $i++) {
#get a random (key from the array);
$key = array_rand($availColour, 1);
echo '<div class="innerTbl" style="width: 50px; float: left;
background-color: '.$key.';">';
#directly print out the value of the selected $key
echo $availColour[$key];
echo "</div>";
}
?>
您使用的是分配
=
而不是比较=
所以改变
if($Monday=“#F00”)
进入
if($Monday==“#F00”)
实现这一点的更好方法是根本不使用比较
<?php
$availColour = array("#F00"=>"Red","#FF0"=>"Green","#0D0"=>"Yellow");
for ($i = 1; $i <= 9; $i++) {
#get a random (key from the array);
$key = array_rand($availColour, 1);
echo '<div class="innerTbl" style="width: 50px; float: left;
background-color: '.$key.';">';
#directly print out the value of the selected $key
echo $availColour[$key];
echo "</div>";
}
?>
所有星期一都应该是红色..讨厌星期一..所有星期一都应该是红色..讨厌星期一..除了它只打印颜色字符串(数组值)这比他要求的要少,而且因为不是所有的颜色都是这种格式的CSS@MohdMoe这就是他的代码所做的。没有迹象表明他的代码应该为任何给定的十六进制值打印一个名称。只是因为您没有测试他的代码,他从数组中取出十六进制并将其打印在CSS中,然后他将其chec将它的值添加到div中,这是主要问题,如果他只需要字符串名,他只需要将它而不是十六进制值放在数组中,不需要在all@MohdMoe这里没有争论。我感谢你指出我的错误。我已经更新了上面的解决方案,以考虑到你的意见lid和非常感谢的要点。我刚刚得到我的评论许可,所以我在你身上使用它,除了它只打印颜色字符串(数组值)这比他要求的要少,而且因为不是所有的颜色都是这种格式的CSS@MohdMoe这就是他的代码所做的。没有迹象表明他的代码应该为任何给定的十六进制值打印一个名称。只是因为您没有测试他的代码,他从数组中取出十六进制并将其打印在CSS中,然后他将其chec将它的值添加到div中,这是主要问题,如果他只需要字符串名,他只需要将它而不是十六进制值放在数组中,不需要在all@MohdMoe这里没有争论。我感谢你指出我的错误。我已经更新了上面的解决方案,以考虑到你的意见盖和非常感谢的点。我