Php在循环中获取一个数组

时间:2014-08-15 10:04:31

标签: php mysql arrays

如何为每个索引保存Arry的值?我可以使用Sql语句或循环吗? 我的mssql声明:

 $statement = "SELECT DISTINCT cat_id,value FROM mydb where cat_id > '3000' and cat_id < '6000' order by  cat_id";

显示我的结果:

 foreach($Sitesresults as $row)
    {
 printf("<tr><td>%s</td>     <td>%s</td>/tr>",$row['cat_id'],$row['value']);            
    }

我得到下表:

### cat_id ### value
3000, 100

3000, 200

3000, 300

3000, 400   

4000, 100

4000, 300

5000, 100

5000, 200

5000, 300

5000, 400   

5000, 500

5000, 600

我希望将每个cat_id的值保存为Array并显示如下:

### cat_id ### value
3000, 100,200,300,400

4000, 100,300

5000, 100,200,300,400,500,600

2 个答案:

答案 0 :(得分:4)

您可以在MySQL中使用GROUP_CONCAT

SELECT cat_id, group_concat(distinct value) as values
FROM mydb 
where cat_id > '3000' and cat_id < '6000'
group by cat_id
order by cat_id

答案 1 :(得分:0)

如果您要执行的操作是将值添加到数组中[而不是显示它],那么您需要调整循环:

$container = array();
foreach ($Sitesresults as $row)
{
    $key = strval($row['cat_id']);
    if (!isset($container[$key]))
    {
        $container[$key] = array();
    }
    $container[$key][] = $row['value'];
}

希望这有帮助。