Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 按列对MySQL结果进行分组_Php_Mysql_Arrays_Multidimensional Array - Fatal编程技术网

Php 按列对MySQL结果进行分组

Php 按列对MySQL结果进行分组,php,mysql,arrays,multidimensional-array,Php,Mysql,Arrays,Multidimensional Array,我在将MySQL结果输出到HTML时遇到问题。我得到了一个MySQL结果,返回: | title | category_name | from_where | --------------------------------------------- | Title num 1 | Journal | iidl_file | --------------------------------------------- | Title num 2 | Books

我在将MySQL结果输出到HTML时遇到问题。我得到了一个MySQL结果,返回:

| title        | category_name | from_where |
---------------------------------------------
| Title num 1  | Journal       | iidl_file  |
---------------------------------------------
| Title num 2  | Books         | iidl_file  |
---------------------------------------------
| Title num 3  | Announcement  | iidl_post  |
---------------------------------------------
| Title num 4  | News          | iidl_post  |
---------------------------------------------
如何在HTML中预览此数据,如下所示:

iidl_file
 - Title num 1 (Journal)
 - Title num 2 (Books)

--------------------------

iid_post
 - Title num 3 (Announcement)
 - Title num 4 (News)

这就是我要做的:

SELECT `title`, `category_name`, `etc` FROM `table_name` ORDER BY `from_where`;
如果您有许多记录,那么确保
from\u where
列上有一个索引将使您受益匪浅

下面是一些伪代码:

$groups = array();
foreach ($rows as $row) {
    $from_where = $row['from_where']
    if (! isset($groups[$from_where])) {
        $groups[$from_where] = array();
    }
    $groups[$from_where][] = $row;
}
现在,您的
$groups
将包含由
from_where
列键入的数组


这样做,您实际上不必在查询中发出ORDER BY。

只是一个想法,只需使用普通的mysql结果循环和这样的代码,未经测试,但希望它能有所帮助

$from_all = array();
$from_all[$from_where][] = array('title'=>$title,'category_name'=>$category_name)
然后


这是一个显示问题,与mysql本身无关。使用%2==0来破坏数据..在mysql中使用限制..选择权归你..试试兄弟,做一些研发,然后向我们提供代码:)
foreach($from_all as $from_where=>$array) {
    echo $from_where
    foreach($array as $row) {
        echo $row['title'];
        echo $row['category_name'];
    }
}