1

ループ内のカラー コードに従って 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>";
4

4 に答える 4

7

その理由は、あなたが混同している=から==です。

if ($Monday = "#F00") {

する必要があります

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

将来これを防ぐために、多くの人がこれを行います。

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

最初はぎこちなく見えるかもしれませんが、ステートメントを次のように打ち間違えたかのように、それらを混同するのを防ぐことができます。

if ("#F00" = $Monday) {

あなたのインタープリターは致命的なエラーで死ぬだけで、定数に代入できないなどと不平を言います.

ところで、#FF0黄色で#0D0緑色ですが、テキストも交換したようです。

于 2012-11-11T02:15:09.270 に答える
2

==等価と代入を混同しています=。2 つの値または値が等しいかどうかをテストするときは、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 で 16 進値を使用し、(存在する場合)divそれ自体で読み取り可能な文字列を使用します。文字列が指定されていない場合 ( の場合など#0D0)、「不明」が代用されます。

この三項演算子の特定の使用には、PHP バージョン 5.3+ が必要です。

于 2012-11-11T02:26:27.347 に答える
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>";
}
?>
于 2012-11-11T02:31:19.240 に答える
1

条件を確認してください - == を使用して等しいかどうかをテストする必要があります。現在、条件は値を割り当てているため、最初の条件は常に true と評価されます。

これを試して:

if ($Monday == "#F00") {
    echo "Red";
}
elseif ($Monday == "#FF0") {
    echo "Green";
}
elseif ($Monday == "#0D0") 
{
    echo "Yellow";
}
于 2012-11-11T02:17:30.523 に答える