gpt4 book ai didi

php - 使用 PHP foreach 构建样式表

转载 作者:可可西里 更新时间:2023-11-01 00:09:42 26 4
gpt4 key购买 nike

好的 - 所以我正在创建一个动态 CSS 样式表,我想用一个数组来设置它。

首先让我声明,我不是 PHP 专家,但我对它有些了解。

这是我最基本的数组。

$visual_css = array (
array(
"selector" => "body",
"property" => "background",
"value" => "#FFF",
"property2" => "color",
"value2" => "#000",
"type" => "css"
)
);

所以我们有一个选择器和两个带值的属性。

我现在想创建样式表,但由于缺乏 PHP 知识,我遇到了问题。

foreach ($visual_css as $value) {
switch ($value['type']) {
case "css":

// Open selector
echo ( !empty($value['selector']) ? $value['selector'] . '{' : null );

foreach ($value as $key => $item) {
foreach ($value as $key2 => $item2) {
//Match only the id's against the key
if (preg_match('/^property/i', $key) && preg_match('/^value/i', $key2)) {
// First property
echo ( !empty($item) ? $item . ':' : null );
echo ( !empty($item2) ? $item2 . ';' : null );
}
}

}

// Close selector
echo ( !empty($value['selector']) ? '}' : null );

break;
}
}

现在我知道这段代码不正确,因为它在样式表中输出以下内容:

body{background:#FFF;background:#000;color:#FFF;color:#000;}

这是期望的结果:

body{background:#FFF;color:#000;}

所以基本上,我希望能够创建无限数量的属性和值,并在它们之后递增数字,并让代码将其写出来。

谁能帮帮我?

谢谢!

最佳答案

所以我的方法使用多维数组而不是平面数组来将选择器的属性嵌套在子数组中。通过首先循环第一层,然后遍历每个父级的子级并为每个属性/值对组合 CSS,您的方法将更加简洁。它还使迭代变得轻而易举,而不是必须检查键的值才能找到你所在的那一对。如果您需要不同的输出格式,您的迭代代码可以决定,它应该被排除在结构之外

$visual_css = array (
'body' => array(
'background' => '#FFF',
'color' => '#000'
)
);

$output = '';
foreach($visual_css as $k => $properties) {
if(!count($properties))
continue;

$temporary_output = $k . ' {';

$elements_added = 0;

foreach($properties as $p => $v) {
if(empty($v))
continue;

$elements_added++;

$temporary_output .= $p . ': ' . $v . '; ';
}

$temporary_output .= "}\n";

if($elements_added > 0)
$output .= $temporary_output;
}

echo $output;
// body {background: #FFF; color: #000; }

关于php - 使用 PHP foreach 构建样式表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15990653/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com