0

我有一个包含所有样式的数组,我必须通过在 PHP 中循环将它们更改为适当的 CSS。

例如,

Array
(
    [#outlook a] => Array
        (
            [padding] => Array
                (
                    [0] => 0
                )

        )

    [body] => Array
        (
            [width] => Array
                (
                    [0] => 100% !important
                )

            [-webkit-text-size-adjust] => Array
                (
                    [0] => none
                )

            [margin] => Array
                (
                    [0] => 0
                )

            [padding] => Array
                (
                    [0] => 0
                )

            [background-color] => Array
                (
                    [0] => #FAFAFA
                )

        )
[.preheaderContent div a] => Array
    (
        [color] => Array
            (
                [0] => #336699
            )

        [font-weight] => Array
            (
                [0] => normal
            )

        [text-decoration] => Array
            (
                [0] => underline
            )

    )

[.preheaderContent div a:visited] => Array
    (
        [color] => Array
            (
                [0] => #336699
            )

        [font-weight] => Array
            (
                [0] => normal
            )

        [text-decoration] => Array
            (
                [0] => underline
            )

    )

)

像这样我将有一个包含所有样式信息的大数组。所以我必须把它转换成正确的 CSS。我知道这很简单。但我在递归循环的某个地方失败了。这是我为此使用的功能。

function cssbuild(&$cssArray)
{
    foreach ($cssArray as $selector => $style) 
    {
        if(is_array($style))
        {
            return $this->cssbuild($style);
        }
        else
        {
            $cssArray[$selector] = $cssArray[$selector].":".$style.";";
        }
    }
}

任何关于如何做到这一点的想法将不胜感激......

4

2 回答 2

2

试试这个:

function createCSS($cssArray)
{
    $css = '';
    foreach ($cssArray as $classname => $properties)
    {
        $css .= "$classname{";
        foreach( (array) $properties as $propertyname => $propertyvalue )
        $css .= $propertyname .": ".$propertyvalue[0].";";
        $css .= "}";
    }
    return $css;
}
于 2013-03-05T11:02:28.253 回答
0

在给定的示例中,您没有递归...

你可以用这个做一些递归

<?php
BuildList($arrayParent, 0);

function BuildList($arrayElements, $depth)
{
    foreach($arrayElements as $element => $style)
    {
        echo str_repeat("&nbsp;&nbsp;", $depth) . $element . ":" . $style;
        $depth++;
        if(count($element->subCSSElement) > 0)
            $depth = BuildList($element->subCSSElement, $depth);

        return $depth;
    }
}
?>
于 2013-03-05T10:53:27.097 回答