PHP循环未根据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

我试图根据循环中的颜色代码来回显div的颜色名称,但它似乎不起作用。这就是我得到的:

框的颜色应与其中的文本相关联。我做错什么了吗?这是我目前的代码:

$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这里没有争论。我感谢你指出我的错误。我已经更新了上面的解决方案,以考虑到你的意见盖和非常感谢的点。我