PHP循环不根据div颜色代码打印颜色名称

时间:2012-11-11 02:09:46

标签: php

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

enter image description here

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

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

4 个答案:

答案 0 :(得分:7)

原因是你混淆了===

if ($Monday = "#F00") {

应该是

if ($Monday == "#F00") {

为了防止将来发生这种情况,很多人会这样做。

if ("#F00" == $Monday) {

一开始可能看起来很尴尬,但它可以防止你混淆它们,好像你把你的陈述输错了

if ("#F00" = $Monday) {

你的口译员会因致命的错误而死,抱怨你不能分配一个常数,就像那样 - 这实际上会让你的错误更加明显。

btw,#FF0为黄色,#0D0为绿色,看起来你也交换了文字。

答案 1 :(得分:2)

您对平等==和作业=感到困惑。在测试两个或两个值的相等性时,您需要使用两个==(除非您正在测试类型,在这种情况下您将使用===)。此外,如果使用初始数组作为查找书写颜色名称,则可以简化代码:

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

上面将使用CSS中的十六进制值,以及(如果存在)div本身内的可读字符串。如果没有提供字符串(#0D0就是这种情况),“Unknown”将被替换。

三元运算符的这种特殊用法需要PHP版本5.3 +。

答案 2 :(得分:2)

您使用的是分配=而不是比较==

所以改变

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>";
}
?>

答案 3 :(得分:1)

检查您的条件 - 您需要使用==来测试相等性。目前,您的条件是分配值,因此第一个条件将始终评估为真。

试试这个:

if ($Monday == "#F00") {
    echo "Red";
}
elseif ($Monday == "#FF0") {
    echo "Green";
}
elseif ($Monday == "#0D0") 
{
    echo "Yellow";
}