1

我想对从 mysql 数据库返回的数组进行分组。我已经命名了数组$item_info,我想将它分组folder_id

首先,两个相关的问题:

  1. 正在执行单个查询以获取下面的数据并始终(或很可能)比 2 个单独的查询(一个涉及所需GROUP BY的查询,另一个不涉及)更快地创建新的数组键。
  2. 从我在 SO 上读到的内容看来,最好让 MySQL 查询保持简单并使用 PHP 整理数据。对一般哲学的评论?

这是我的数据库返回的内容:

$item_info=array(
 array("id"=>"1", 'folder_id'="1", "img"=>"/images/button_01.gif"),
 array("id"=>"2", 'folder_id'="1", "img"=>"/images/button_02.gif"),
 array("id"=>"3", 'folder_id'="2",  "img"=>"/images/button_03.gif"),
 array("id"=>"4", 'folder_id'="2", "img"=>"/images/button_04.gif"),
 array("id"=>"5", 'folder_id'="3", "img"=>"/images/button_05.gif"),
 array("id"=>"6", 'folder_id'="3", "img"=>"/images/button_06.gif")
);

这是我想排列的方式:

$item_info=array(
 array(
   array("id"=>"1", 'folder_id'="1", "img"=>"/images/button_01.gif"),
   array("id"=>"2", 'folder_id'="1", "img"=>"/images/button_02.gif")
 ),
 array(
   array("id"=>"3", 'folder_id'="2",  "img"=>"/images/button_03.gif"),
   array("id"=>"4", 'folder_id'="2", "img"=>"/images/button_04.gif")
 ),
 array(
   array("id"=>"5", 'folder_id'="3", "img"=>"/images/button_05.gif"),
   array("id"=>"6", 'folder_id'="3", "img"=>"/images/button_06.gif")
 ));
4

1 回答 1

3

由于您已经在 RAM 中拥有数据,因此在 PHP 中进行分组似乎非常合理,因为它不需要太多的处理。

你可能想试试

$item_info_tmp=array();
foreach ($item_info as $ii) {
    if (!isset($item_info_tmp[$ii['folder_id']]))
        $item_info_tmp[$ii['folder_id']]=array();
    $item_info_tmp[$ii['folder_id']][]=$ii;
}
$item_info=array_values($item_info_tmp);
于 2012-05-10T21:21:37.473 回答