1

我正在尝试使用数组来返回特定的 CSS 代码,但是我还没有找到一种自动方法来使数组的值根据数组发生变化。这是我正在尝试做的事情:

$css = array(
    "bgcolor" => array(
        "wh" => array(* => "background-color:rgba(255,255,255,*);"),
        "bk" => array(* => "background-color:rgba(0,0,0,*);")
    ),
    "textcolor" => array(
        "wh" => "color: #FFFFFF;",
        "bk" => "color: #000000;"
     ),
    "fade" => array(
        "wh" => array(* => "box-shadow:#FFF 0px 0px *px;"),
        "bk" => array(* => "box-shadow:#000 0px 0px *px;")
     )
);

我使用 * 只是为了说明我想要实现的目标。这是代码应该返回的内容:

$css["bgcolor"]["wh"][0.5]; // print background-color:rgba(255,255,255,0.5);
$css["textcolor"]["wh"]; // print color: #FFFFFF;
$css["fade"]["wh"][100]; // print box-shadow:#FFF 0px 0px 100px;

我不知道我想要的是否可能,但我认为它是可能的,我只是不知道如何。:D

4

2 回答 2

2

如果您使用的是 PHP 5.3 或更高版本,则可以通过使用匿名函数来实现这一点,如下所示:

<?php

    $css = array(
        'bgcolor' => array(
            'wh' => function($s) {
                return 'background-color: rgba(255, 255, 255, ' . $s . ');';
            },
            'bk' => function($s) {
                return 'background-color: rgba(0, 0, 0, ' . $s . ');';
            }
        )
    );

    echo($css['bgcolor']['bk'](0.25)); // Returns rgba(0, 0, 0, 0.25)
    echo(PHP_EOL);
    echo($css['bgcolor']['wh'](0.75)); // Returns rgba(255, 255, 255, 0.75)

?>

我希望这就是你所追求的。

于 2013-07-04T19:30:49.317 回答
0

使用函数

<?php

echo getStyle("bgcolor", "wh", 0.5);
echo getStyle("textcolor", "wh", 0.5);
echo getStyle("fade", "wh", 100);

function getStyle($style, $color, $px = 0) {

    $css = array(
        "bgcolor" => array(
            "wh" => "background-color:rgba(255,255,255,*px);",
            "bk" => "background-color:rgba(0,0,0,*px);"
        ),
        "textcolor" => array(
            "wh" => "color: #FFFFFF;",
            "bk" => "color: #000000;"
         ),
        "fade" => array(
            "wh" => "box-shadow:#FFF 0px 0px *px;",
            "bk" => "box-shadow:#000 0px 0px *px;"
         )
    );
    return str_replace("*", $px, $css[$style][$color]);
}
于 2013-07-04T19:22:24.983 回答