Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/66.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_Foreach_Group By - Fatal编程技术网

在php和mysql中对数据排序需要多少?

在php和mysql中对数据排序需要多少?,php,mysql,arrays,foreach,group-by,Php,Mysql,Arrays,Foreach,Group By,我想对从mysql数据库返回的数组进行分组。我已将数组命名为$item\u info,并希望按文件夹\u id对其进行分组 首先,两个相关问题: 执行单个查询以获取下面的数据,并创建新的数组键总是(或很可能)比两个单独的查询(一个涉及所需的GROUP BY,另一个不涉及)快 从我阅读的内容来看,似乎最好保持MySQL查询的简单性,并使用PHP对数据进行排序。对这一普遍哲学有何评论 以下是我的数据库提供的信息: $item_info=array( array("id"=>"1", 'fol

我想对从mysql数据库返回的数组进行分组。我已将数组命名为
$item\u info
,并希望按
文件夹\u id
对其进行分组

首先,两个相关问题:

  • 执行单个查询以获取下面的数据,并创建新的数组键总是(或很可能)比两个单独的查询(一个涉及所需的
    GROUP BY
    ,另一个不涉及)快
  • 从我阅读的内容来看,似乎最好保持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")
     ));
    

    因为您已经在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);