我有这个mysql示例表:
+----+---------------+-------+
| id | company | value |
+----+---------------+-------+
| 1 | google | 50 |
+----+---------------+-------+
| 2 | microsoft | 24 |
+----+---------------+-------+
| 3 | google | 12 |
+----+---------------+-------+
| 4 | microsoft | 89 |
+----+---------------+-------+
| 5 | stackoverflow | 45 |
+----+---------------+-------+
我想打印出来,以便按公司分组:
<ul class="google">
<li>50</li>
<li>12</li>
</ul>
<ul class="microsoft">
<li>24</li>
<li>89</li>
</ul>
<ul class="stackoveflow">
<li>45</li>
</ul>
这是我目前的代码:
$resultx = mysql_query();
$temp=0;
$p = array();
while ($row = mysql_fetch_array($resultx)) {
$p[$temp]['id']=$row['id'];
$p[$temp]['company']=$row['company'];
$p[$temp]['value']=$row['value'];
$temp++;
}
foreach ($p as $obj) {
echo '<ul class="'.$obj["company"].'"><li>'.$obj["value"].'</li></ul>';
};
但我的代码会将所有公司打印在一起。
编辑:
我想将公司分为不同的UL。 我认为我必须在我的foreach中使用另一个foreach。
答案 0 :(得分:4)
构建阵列时,请将阵列的键设为公司名称或公司ID。由于我在查询中看不到公司ID,因此我会使用姓名。现在让它成为一个多数组的数组,内部数组使值变为现在。
$resultx = mysql_query();
$p = array();
while ($row = mysql_fetch_array($resultx)) {
$p[$row['company']]['id']=$row['id'];
$p[$row['company']]['company']=$row['company'];
$p[$row['company']]['values'][]=$row['value'];
}
foreach ($p as $obj) {
echo '<ul class="'.htmlspecialchars($obj["company"]).'">';
foreach ($obj['values'] as $value) {
echo '<li>'.htmlspecialchars($value).'</ul>';
}
echo '</ul>';
};
答案 1 :(得分:0)
$resultx = mysql_query();
$temp=0;
$companies = array();
while ($row = mysql_fetch_array($resultx)) {
$companies[$row['company']][]=$row;
}
foreach ($companies as $company=>$values) {
echo '<ul class="'.$company.'">';
foreach($values as $value){
echo '<li>'.$value["value"].'</li>';
}
echo'</ul>';
}
当然有其他方法可以做到这一点,为了简单起见我使用了2个不同的循环。
答案 2 :(得分:0)
让我们开始吧:
SELECT * FROM `yourTableName` ORDER BY `company`
然后你这样做:
for($i = 0; $i<sizeOf($p); $i++)
{
if ($p[$i] == 0 || $p[$i]['company'] != $p[$i-1]['company'])
echo '<ul class="'.$obj["company"].'">';
ecoh '<li>'.$obj["value"].'</li>';
if ($p[$i] == 0 || $p[$i]['company'] != $p[$i-1]['company'])
echo '</ul>';
}
答案 3 :(得分:0)
$companies = array();
//One array that will have companies' names as keys
// and the value would be an array of values.
$resultx = mysql_query();
while ($row = mysql_fetch_array($resultx)) {
$companies[ $row['company'] ][] = $row['value'];
}
foreach ($companies as $company => $values) { //Loop the companies
echo '<ul class="'.$company.'">';
foreach($values as $value) //Loop the values of that company
{
echo '<li>'.$value.'</li>';
}
echo '</ul>';
}
** Haven没有测试过它。
答案 4 :(得分:0)
我希望这能解决你的问题
$p = array(array());
while ($row = mysql_fetch_array($resultx)) {
$p[$row['company']][] = $row['value'];
}
foreach ($p as $key => $obj) {
echo '<ul class="'.$key.'">';
foreach ($obj as $val) {
echo '<li>'.$val.'</li>';
}
echo '</ul>';
};