2012-07-01 3 views
1

Я использую codeIgniter. Мне нужно создать многомерный массив данных из колледжа DB nammed. База данных имеет 3 столбца: id, OFID и имя. Столбец OFID содержит идентификатор родителя этого колледжа. Для колледжей, у которых нет родителя, есть OFID как 0.Создание многомерного массива данных, извлеченных из базы данных

Массив должен содержать имя, ID и OFID колледжей, у которых OFID = 0 в качестве элементов первого измерения. Для колледжей, которые имеют OFID! = 0, должны быть помещены как 2-й (и так далее) размерный массив для колледжа, чей идентификатор у них есть как OFID.

Я думал сделать это рекурсивно, но я не могу это закончить. Я знаю, что в этом есть много ошибок, пожалуйста, помогите.

Класс модели следующим образом: (контроллер вызывает функцию денатурата())

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; 
} 

} 
+0

Ошибка не использовала $ this keyword. – user1494613

ответ

1

Попробуйте что-то вроде этого:

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

В любом случае, лучший способ я нашел себя делать рекурсию , заключается в том, чтобы взять какую-то рекурсивную функцию, которая действительно проста, и вы знаете все аспекты этого и создаете ее шаг за шагом. «Шаг за шагом» я подразумеваю, что сначала вы не передаете все значения, а распечатываете их, просто чтобы узнать, что, где и как вы получаете, затем попытайтесь передать их. Рекурсивные функции, такие как этот, являются повреждением мозга, если вы не понимаете, как это работает. Идея вашего, состоит в том, чтобы получить массив каждый раз, когда вы натыкаетесь на колледж, в котором есть детские колледжи. Я вижу, что вы все исправите, просто попробуйте сделать это, как я сказал ранее - шаг за шагом, и вы получите это.

+0

Я получаю то, что вы говорите, спасибо приятелю. – user1494613

+0

Ошибка не использовала $ this keyword. – user1494613

Смежные вопросы