Приведение переменной для написания CSS - PullRequest
0 голосов
/ 07 марта 2012

Итак, я создаю таблицу и хочу использовать четырехцветную схему, выбранную случайным образом из группы из 10 схем.

Вот мой CSS / PHP:

<?php header('Content-type: text/css');

 // 0   grey
$color00 = '#959595';       //light grey
$color10 = '#616161';       //medium grey
$color20 = '#414141';       //dark grey
$color30 = '#dfdfdf';       //white grey
//  1   pink 
$color01 = '#e45494';       //light pink
$color11 = '#d70060';       //medium pink
$color21 = '#900040';       //dark pink
$color31 = '#f7ccdf';       //white pink
//  2   red 
$color02 = '#ee576f';       //light red
$color12 = '#e50428';       //medium red
$color22 = '#9a031b';       //dark red
$color32 = '#facdd4';       //white red
//  3   orange 
//(etc, up to 09-39)

$seed   =   rand(0,9);

$lightcolor = "color0".$seed;
$medcolor   = "color1".$seed;
$darkcolor  = "color2".$seed;
$whitecolor = "color3".$seed;

?>


#wttbl{
border:0;
border-collapse:collapse;
cellpadding:3;
width:500px;
font-family:Verdana;
font-size:9px;
}

#wttbl td, #wttbl th{
padding: 4px;   
}

#wttbl #header{
background:<?="$lightcolor"?>;  
}

#wttbl td{
text-align:right;
color:#414141;
}

#wttbl .odd{
background:<?="$color33"?>;
}

#wttbl .even{

}

#wttbl tr:hover{
background:<?="$color03"?>;
} 

#wttbl td:hover{
background:<?="$color23"?>;
color:white;     
}

Проблема в том, что такие жесткие кодировки, как

#wttbl .odd{ background:<?="$color33"?>; }

, кажется, работает и отображает правильный цвет CSS в моем коде, в то время как такие вещи, как

#wttbl #header{ background:<?="$lightcolor"?>; }

эхо "color03" в теге.

Что я делаю не так, и как я могу это исправить?

Ответы [ 2 ]

5 голосов
/ 07 марта 2012

Вам нужно использовать массивы:

$color = array(
    array('#959595', '#616161', ...),
    array('#e45494', '#d70060', ...)
);

$lightcolor = $color[$seed][0];

И нет, переменные переменные никогда не являются хорошей идеей, хотя будет несколько ответов с упоминанием их.

2 голосов
/ 07 марта 2012

Вы можете заключить строку в {} для ссылки на переменную по строке, которая составляет ее имя:

$lightcolor = ${"color0".$seed};
$medcolor   = ${"color1".$seed};
$darkcolor  = ${"color2".$seed};
$whitecolor = ${"color3".$seed};

echo $lightcolor;
// #959595

Однако это не самый лучший метод.Было бы более целесообразно хранить их в массивах.Построение имен переменных (называемых переменными в PHP ), как правило, становится трудным для отладки, особенно в глобальном пространстве имен.Становится трудно отследить, какие переменные были определены или сколько были определены.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...