1

mysqlデータベースから返した配列をグループ化したいと思います。アレイ$item_infoに名前を付けたので、それをでグループ化しfolder_idます。

まず、2つの関連する質問:

  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 に答える