PHP-通过基于计数的循环创建多维数组

PHP-通过基于计数的循环创建多维数组,php,mysql,codeigniter,multidimensional-array,Php,Mysql,Codeigniter,Multidimensional Array,在为多维数组提供count和foreach的正确组合时遇到一些问题 我目前正在执行以下操作,以根据数据库返回的结果创建关联数组: $sql = "SELECT g.id, g.shortname FROM games g ORDER BY g.id ASC"; $query = $this->db->query($sql); if($query->num_rows() > 0): foreach($query-&g

在为多维数组提供count和foreach的正确组合时遇到一些问题

我目前正在执行以下操作,以根据数据库返回的结果创建关联数组:

$sql = "SELECT g.id, g.shortname FROM games g ORDER BY g.id ASC";
        $query = $this->db->query($sql);

        if($query->num_rows() > 0):
            foreach($query->result() as $row):
                $data[$row->id] = $row->shortname;
            endforeach;
        return $data;
        else:
            return false;
        endif;
这当然会产生以下数组(工作正常;半假代码):

……等等

但我想做的是通过一个多维数组自动将结果(基于计数变量/限制器)分成多个组,如下所示:

array (Group 1 => 
         array([1] => CoolGame [2] => AnotherGame),
       Group 2 =>  
         array([3] => BetterGame [4] => UglyGame)
)
在这个例子中,我的
$depth\u count=2

如果有人感兴趣,我这样做是为了通过CI的form helper的form_multiselect()函数为multi-select使用自动生成的
标记。 需要一些帮助来调整我的PHP以实现这一点。谢谢

$nGroup = 1; $curGroup = '';
$nRow = 0;
foreach ($query->result() as $row){
  if ($nRow++ % 2 == 0){ // change 2 to your limiter
    $curGroup = 'Group ' . $nGroup++;
    $data[$curGroup] = array();
  }
  $data[$curGroup][$row->id] = $row->shortname;
}
像这样的?跟踪您所在的行、添加到的当前组以及组名。然后,每第2次(或第n次)设置一组,切换组。

您可以使用php的方法。请注意它在下面修改的代码中的用法:

if($query->num_rows() > 0):
    foreach($query->result() as $row):
        $data[$row->id] = $row->shortname;
    endforeach;

    $data = array_chunk($data, 2);

return $data;

+1、触摸。我忘了那个函数了。如果是任意分组的话,我真的很喜欢它。+1数组块(在使用数组时非常有用的函数:))很酷的东西。除了创建数字索引数组键之外,它可以完美地工作,并且是完整的解决方案。我可能可以在事实之后遍历数组,并在每个键名前加上“Group”。
if($query->num_rows() > 0):
    foreach($query->result() as $row):
        $data[$row->id] = $row->shortname;
    endforeach;

    $data = array_chunk($data, 2);

return $data;