Php 强制转换变量以编写CSS

Php 强制转换变量以编写CSS,php,css,casting,Php,Css,Casting,所以,我在做一个表格,我想使用一个从10个方案中随机选择的4色方案 以下是我的CSS/PHP: <?php header('Content-type: text/css'); // 0 grey $color00 = '#959595'; //light grey $color10 = '#616161'; //medium grey $color20 = '#414141'; //dark grey $color30 = '#dfdfdf';

所以,我在做一个表格,我想使用一个从10个方案中随机选择的4色方案

以下是我的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{
边界:0;
边界塌陷:塌陷;
细胞增殖:3;
宽度:500px;
字体系列:Verdana;
字体大小:9px;
}
#wttbl td,#wttbl th{
填充:4px;
}
#wttbl#收割台{
背景:;
}
#wttbl td{
文本对齐:右对齐;
颜色:#414141;
}
#奇数{
背景:;
}
#即使{
}
#wttbl tr:悬停{
背景:;
} 
#wttbl td:悬停{
背景:;
颜色:白色;
}
问题是,硬编码的东西

#wttbl .odd{ background:<?="$color33"?>; }
#wttbl #header{ background:<?="$lightcolor"?>; }
#wttbl.odd{background:}
似乎可以工作,并在我的代码中回显正确的css颜色,而

#wttbl .odd{ background:<?="$color33"?>; }
#wttbl #header{ background:<?="$lightcolor"?>; }
#wttbl#头{background:}
将“color03”回显到标签中


我做错了什么,如何修复它?

您需要使用阵列:

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

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

不,变量从来都不是一个好主意,即使会有几个答案提到它们。

您可以在
{}
中包含一个字符串,以组成变量名称的字符串引用变量:

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

echo $lightcolor;
// #959595

然而,这似乎不是最好的方法。将它们存储在数组中更合适。构建变量名(调用)往往变得难以调试,特别是在全局命名空间中。很难跟踪定义了哪些变量,或者定义了多少变量。

变量变量是一个可怕的想法,实际上,它与
背景:但这也可以。我特别不想使用数组,所以这是完美的。谢谢“我特别不想使用数组”——出于好奇,为什么@虫族强迫我用另一种方式去做。这只是一个个人项目,我正在努力学习我所知道的东西。这可能不是最好的方法,但这是我包里另一个奇怪形状的工具。你缺少阵列。。。也可以使用
而不是等效的,但效率和清晰度要低得多的
。。。另外,使用PHP生成随机彩色CSS的整个想法……都得到了认可;变量在调试时不是那么直观,当数组简单得多时,会给问题增加额外的复杂性。对于@zerkms来说+1是正确的答案,尽管没有被接受。@Michael:
我特别不想使用数组
——尤其是这让我哭了。但只要我们给出了正确的答案——我们不在乎,对吧?;-)@虫族不是我不想使用阵列。我只是不在这里,因为我已经知道怎么做了。这个项目的目的是教我用不同的方式做事。很抱歉