-1

ループ内の値に基づいて tr の背景色を変更したいので、値が次のいくつかのレコードで X の場合は色が青になり、値が別の値に変更された場合は色も黄色に変更されます。

以下の私のコードには欠陥があり、最初の行を青でペイントした後、すべての行が黄色になります。

foreach ($arr as $key => $value)
{
  if ($old_value == $value)
  {
    $colour = 'blue';
  }
  else
  {
    $colour = 'yellow';
    $old_value = $value;
  }

}

次のような出力が必要です。 ここに画像の説明を入力

4

5 に答える 5

4

次のように、最後に使用した色に応じて色を変更する必要があります

$arr = array(1,1,1,4,4,7,3);
$old_value = 0;
$colour = 'blue';
echo '<table>';
foreach ($arr as $key => $value)
{
    if ($old_value == $value)
    {
        //colour stays the same
    }
    else
    {
        if($colour == 'blue')
        {
            $colour = 'yellow';
        }
        else
        {
            $colour = 'blue';
        }
        $old_value = $value;
    }
    echo '<tr style="background-color:' .$colour . '"><td>' . $value . '</td></tr>'; 
}
echo '</table>';

これで、値が等しいすべてのグループが同じ色になり、次のグループは別の色になります。 こんな感じ

于 2013-07-11T13:24:55.243 に答える
2
$arr = ['something', 'something else', 'another something'];
$old_value = "";
foreach ($arr as $key => $value){
    if ($old_value == $value){
        $colour = 'blue';
    }
    else{
    $colour = 'yellow';
    $old_value = $value;
    }
    echo '<tr style="background-color:' .$colour . '"><td>' . $value . '</td></tr>'; 
    }

出力:

出力スクリーンショット

于 2013-07-11T13:16:45.407 に答える
2

サイクルを正しく使用していることを確認してください。

foreach ($arr as $key => $value)
{
  if ($old_value == $value)
  {
    $colour = 'blue';
  }
  else
  {
    $colour = 'yellow';
    $old_value = $value;
  }

  //now $color has the desired value
  //so now you should echo your tr

}

//now $color contains just the last row
于 2013-07-11T13:15:38.637 に答える
1

あなたは好きかもしれません

$i=0;
$old_value = "";

foreach ($arr as $key => $value)
{
  if ($old_value != $value)
  {
    $old_value = $value;
    $i++;
  }

  if($i % 2 == 1)
  {
    $colour = 'yellow';        
  } else {
    $colour = 'blue';  
  }

}
于 2013-07-11T13:15:10.157 に答える