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

k00*_*00k 5 php mysql codeigniter multidimensional-array

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

我目前正在执行以下操作来从我的db返回的结果创建一个关联数组:

$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;
Run Code Online (Sandbox Code Playgroud)

这当然产生以下数组(工作正常;半仿代码):

array ( [1] => CoolGame, [2] => AnotherGame, [3] => BetterGame, [4] => UglyGame)
Run Code Online (Sandbox Code Playgroud)

....等等

但我想要做的是通过多维数组自动将结果(基于计数var/limiter)分解成组,如下所示:

array (Group 1 => 
         array([1] => CoolGame [2] => AnotherGame),
       Group 2 =>  
         array([3] => BetterGame [4] => UglyGame)
)
Run Code Online (Sandbox Code Playgroud)

所以在那个例子中,我的 $depth_count = 2;

如果有人感兴趣,我这样做是为了<optgroup>通过CI的表单助手的form_multiselect()函数使用自动生成的标签进行多选.需要一些帮助来调整我的PHP来实现这一点.谢谢!

Oza*_*ray 7

你可以使用php的array_chunk方法.请注意它在以下修改代码中的用法:

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

    $data = array_chunk($data, 2);

return $data;
Run Code Online (Sandbox Code Playgroud)