2013-03-05 73 views
0

我有一個包含所有樣式的數組,我必須通過在PHP中循環將它們更改爲適當的CSS。將數組轉換爲常規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.";"; 
     } 
    } 
} 

如何做到這一點任何想法,將不勝感激......

+1

你的循環代碼在哪裏? – DonCallisto 2013-03-05 10:44:55

回答

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; 
} 
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; 
    } 
} 
?> 
+0

請檢查遞歸... – Stranger 2013-03-05 10:54:59

+0

這將返回一個錯誤,因爲$ style也將是一個數組... – Stranger 2013-03-05 11:01:10