Php 将样式数组转换为常规CSS
我有一个包含所有样式的数组,我必须通过在PHP中循环将它们更改为正确的CSS 例如Php 将样式数组转换为常规CSS,php,css,Php,Css,我有一个包含所有样式的数组,我必须通过在PHP中循环将它们更改为正确的CSS 例如 Array ( [#outlook a] => Array ( [padding] => Array ( [0] => 0 ) ) [body] => Array ( [w
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.";";
}
}
}
任何关于如何实现这一点的想法都将不胜感激……在给定的示例中,您没有递归 你可以用它来实现递归
<?php
BuildList($arrayParent, 0);
function BuildList($arrayElements, $depth)
{
foreach($arrayElements as $element => $style)
{
echo str_repeat(" ", $depth) . $element . ":" . $style;
$depth++;
if(count($element->subCSSElement) > 0)
$depth = BuildList($element->subCSSElement, $depth);
return $depth;
}
}
?>
试试这个:
function createCSS($cssArray)
{
$css = '';
foreach ($cssArray as $classname => $properties)
{
$css .= "$classname{";
foreach( (array) $properties as $propertyname => $propertyvalue )
$css .= $propertyname .": ".$propertyvalue[0].";";
$css .= "}";
}
return $css;
}
循环的代码在哪里?