2012-05-10 4 views
1

私はmysqlデータベースから返された配列をグループ化したいと思います。私は配列$item_infoに名前をつけました。私はfolder_idでグループ化したいと思います。phpとmysqlのデータをどのくらい並べ替えるのですか?

まず、二つの関連質問:

  1. が速く希望GROUP BYを含む2つの別々のクエリ(1より下のデータを取得するために、単一のクエリを実行し、新しい配列常にキー(または最も可能性が高い)を作成していると、その他ではない)。
  2. 私が読んだところでは、それは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") 
)); 

答えて

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); 
+0

感謝をしようとする場合があります! –