2015-11-02 4 views
0

У меня есть функция checkLevel($upper,$lower). Предположим, я прохожу checkLevel(2,4). Теперь 2 является родительским элементом 3 и 3 является родителем 4. Зазор между ними составляет . Аналогично, если я вхожу в checkLevel(1,4), результат должен быть , потому что 1 является родительским элементом 2, 2 является родительским элементом 3 и 3 является родителем 4. Число уровней равно 3. См. Изображение ниже. Может кто-нибудь мне помочь?Как определить количество уровней между верхним и нижним уровнями?

enter image description here

+0

показать нам, что вы пробовали до сих пор – Thamilan

+0

Дайте нам что-нибудь работать с .... и, как я вижу, вы можете просто вычесть число друг от друга. Если parentid's последовательны и никогда не вырвались из шаблона. – Theunis

+0

Ну, это не последовательный и насколько я это сделал? Правда в том, что я был мозговой штурм на весь день, и я ничего не придумал. Именно по этой причине я хотел, чтобы у вас были люди. Все, что я знаю, это то, что будет использоваться рекурсивная функция. –

ответ

0

Он должен работать.

$level = 0; 
function checkLevel($start,$end) 
{ 
    global $level; 
    $level++; 
    $array = array(0=>array('id'=>1,'parent_id'=>'0','test'=>'a'),1=>array('id'=>2,'parent_id'=>'1','test'=>'b'),2=>array('id'=>3,'parent_id'=>'2','test'=>'c'),3=>array('id'=>4,'parent_id'=>'3','test'=>'d')); 
    $key = array_search($end,array_column($array, 'id')); 

    if($key == $start) 
     return; 
    else 
     checkLevel($start,$key); 
    //echo $key;exit; 

} 

checkLevel(2,4); 
echo $level; 
+0

вы никогда не должны использовать глобальные переменные вроде этого .. это плохая практика. –

+0

спасибо. Не могли бы вы также сообщить мне причину. –

+0

Вот хорошая статья о глобальных переменных и почему их плохо используют: http://c2.com/cgi/wiki?GlobalVariablesAreBad –

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