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 に答える