我正在编写一个代码,我从这篇文章中获得了大部分功能: https://stackoverflow.com/a/19582946/1316372
但我试图从Mysql数据库中获取数据如下:
//my 2 db queries
$query = array();
$properties_array = array();
$selector_query = tep_db_query("SELECT * FROM bts_selectors");
while ($selector = tep_db_fetch_array($selector_query)) {
$query[] = array('id' => (int)$selector['id'],
'selector' => $selector['selector']
);
}
$properties_query = tep_db_query("SELECT * FROM bts_properties WHERE selector_id= '".(int)$selector['id']."'");
while ($properties_result = tep_db_fetch_array($properties_query)) {
$properties_array[] = array('id' => (int)$properties_result['id'],
'selector_id' => (int)$properties_result['selector_id'],
'css_element' => $properties_result['css_el'],
'element_value' => $properties_result['css_val']
);
}
//this is a working static array
$probs_good =array(
1 => array(
array('id' => 1, 'selector_id' => 1, 'css_element' => 'border', 'element_value' => '3px solid'),
array('id' => 2, 'selector_id' => 1, 'css_element' => 'padding', 'element_value' => '10px')
)
);
///here the output should be generated
$css = '';
foreach($query as $selector){
//$properties = $probs_good[$selector['id']]; //this the working static array
$properties = $properties_array[$selector['id']];
$rules = '';
foreach($properties as $element){
$rules .= "\n \t$element[css_element]:$element[element_value];";
}
$css .= "$selector[selector]".'{'."$rules \n".'}'."\n\n";
}
echo "<pre>";
echo "$css";
echo "</pre>";
我知道我越过foreach
的方式要求数组应该与$probs_good
具有相同的结构,但老实说,我每次尝试都会失败。
在帖子中我指的是有一个引用的查询。
我也试图遵守这一点。
现在我觉得最好只显示干净/简单的代码并解释我试图实现的目标。
答案 0 :(得分:0)
好的,经过研究后我发现了解决方案(很简单,但从来没有......)
$selectors_array = array();
$selector_query = tep_db_query("SELECT * FROM bts_selectors");
while ($selector = tep_db_fetch_array($selector_query)) {
$selectors_array[] = array('id' => $selector['id'],
'selector' => $selector['selector']
);
}
$css = '';
foreach ( $selectors_array as $selector ) {
$rules = '';
$properties_query = tep_db_query("SELECT * FROM bts_properties WHERE selector_id = '" . $selector['id'] . "' ");
while ($properties = tep_db_fetch_array($properties_query)) {
$rules .= "\n \t$properties[css_el]:$properties[css_val];";
}
$css .= "$selector[selector]".'{'."$rules \n".'}'."\n\n";
}
echo "<pre>";
echo "$css";
echo "</pre>";
生成并希望输出:
.thisone{
border:1px solid;
padding:10px;
}
#thatone{
border:1px solid;
}
.body{
width:40px;
height:40px;
}