1

コードイグナイターを使用しています。大学という名前の DB からデータの多次元配列を作成する必要があります。データベースには、id、OfID、name の 3 つの列があります。OfID 列には、その大学の親の ID が含まれています。親がいない大学の場合、OfID は 0 です。

配列には、最初の次元の要素として OfID=0 を持つ大学の名前、ID、および OfID が含まれている必要があります。OfID!=0 を持つ大学では、ID が OfID である大学の 2 番目 (など) の次元配列として配置する必要があります。

これを再帰的にやろうと思ったのですが、これを終えることができません。これには多くの間違いがあることを知っています。助けてください。

モデルクラスは次のとおりです: (コントローラーは meth() 関数を呼び出します)

class Model extends CI_Model
{
var $return_this=array();
function meth()
{       
    $loop_id=0;
    getit($loop_id);
    var_dump($return_this);
}
function getit($loop_id)
{
    $index=0;
    $query = $this->db->query("select * from college where OfID=$loop_id ORDER BY `OfID` ASC;");
    if ($query->num_rows() > 0)
    {
        foreach ($query->result() as $row)
        {
            $pass=$row->id;
            $temp=getit($pass);
            if($temp==0)
            $return_this[$loop_id]= $query->result();
        }
    }
    else return 0;
}

}
4

1 に答える 1

1

次のようなことを試してください:

$rows = array();
foreach ($query->result() as $row)
    {
        $pass=$row->id;
        $rows[] = getit($pass);
    }
return $rows;

いずれにせよ、私が再帰を行う最良の方法は、非常に単純で、そのすべての側面を知っている再帰関数を使用して、それを段階的に構築することです。「ステップバイステップ」とは、最初はすべての値を渡すのではなく、出力して、何を、どこで、どのように取得するかを確認してから、それらを渡そうとすることを意味します。このような再帰関数は、その仕組みを理解していないと脳に損傷を与えます。あなたの背後にあるアイデアは、子供の大学がある大学に出くわすたびに配列を取得することです. 私はあなたがそれを正しく理解しているのを見ることができます。私が前に言ったようにこれを作ってみてください - 一歩一歩、コツをつかむでしょう.

于 2012-07-01T18:54:09.500 に答える