从ARRAY生成CSS

时间:2017-10-07 15:11:17

标签: php arrays

我想知道如何解析以下数组并将其生成为CSS,这里是数组:

$css = array(
        '.item-image|text-align' => 'center',
        '.item-image|vertical-align' => 'middle',
        '.item-image img.single_image|width' => '300px'
    );

对于上面的数组,我需要得到如下结果:

.item-image {
    text-align: center;
    vertical-align: middle;
}

.item-image img.single_image {
    width: 300px;
}

如您所见,CSS类和CSS属性之间用 | 分隔,并且第一和第二个数组具有相同的键,因此它应该合并文本-align vertical-align 在同一标记中(在 .item-image 类中)。

谢谢,我真的很感激任何帮助:)

3 个答案:

答案 0 :(得分:0)

我会为你提供一些小提示来解决你的问题。我不会说这是一个最好的办法。但它可能对你有所帮助

#######

输出

<?php
$css = array(
        '.item-image|text-align' => 'center',
        '.item-image|vertical-align' => 'middle',
        '.item-image img.single_image|width' => '300px'
    );

    foreach($css  as $key=>$val){

        $response=explode('|',$key);

        echo $response[0].' {'.$response[1].':'.$val.'}';

    }

它还没完全完成你必须检查密钥是否已经存在然后你必须更新你的css proeprty假设你可能.item-image {text-align:center} .item-image {vertical-align:middle} .item-image img.single_image {width:300px} 有多个时间在数组

答案 1 :(得分:0)

我接受它。
创建一个新数组并遍历它并输出键和值 新阵列将是一个更简单的多维数组&#34;。

$css = array(
    '.item-image|text-align' => 'center',
    '.item-image|vertical-align' => 'middle',
    '.item-image img.single_image|width' => '300px'
);

$new = array();

Foreach($css as $key => $val){
    $parts = explode("|", $key);
    If(!isset($new[$parts[0]])) $new[$parts[0]] = array();

    $new[$parts[0]][$parts[1]] = $val;
}

//Var_dump($new);

Foreach($new as $key => $subarray){
    Echo $key ."{\n";
    Foreach($subarray as $key2 => $val){
        Echo $key2 . ": " .$val .";\n";
    }
    Echo "}\n";
}

https://3v4l.org/niLPi

答案 2 :(得分:0)

有很多方法可以解决这个问题:使用forforeachwhile或数组函数,它可能会增长到包含多维数组或更多内容。

您之前的答案已经有forforeach答案,而且while几乎相同。

因此,我将使用array_walk

为您提供更高级的解决方案
$css = array(
    '.item-image|text-align' => 'center',
    '.item-image|vertical-align' => 'middle',
    '.item-image img.single_image|width' => '300px'
);
$cssFinal = '';
array_walk($css, function($value, $key) use (&$cssFinal) {
    $key = explode('|', $key);
    $cssFinal .= array_key_exists(0, $key) && array_key_exists(1, $key) ? $key[0].'{'.$key[1].':'.$value.';};'."\r\n" : ''; 
});
file_put_contents('your.css', $cssFinal);

请注意,我们验证密钥是否存在0和1,否则它不会显示任何内容。

我们在字符串末尾为文件和浏览器添加一个断行,当然如果你想将它写入文件

它将用你的css写一个文件:

.item-image{text-align:center;};
.item-image{vertical-align:middle;};
.item-image img.single_image{width:300px;};