[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Рекурсия в ООП
Гость_Олег
Здравствуйте. Я создал рекурсию, но как внедрить в клас в ООП?
Вот код
$arr = array(
array('id'=>1, 'pid'=>0, 'name'=>'Comment 1'),
array('id'=>8, 'pid'=>0, 'name'=>'Comment 2'),
array('id'=>9, 'pid'=>0, 'name'=>'Comment 3'),
array('id'=>10, 'pid'=>0, 'name'=>'Comment 4'),
array('id'=>11, 'pid'=>0, 'name'=>'Comment 5'),
array('id'=>2, 'pid'=>1, 'name'=>'Comment 1.1'),
array('id'=>3, 'pid'=>1, 'name'=>'Comment 1.2'),
array('id'=>6, 'pid'=>1, 'name'=>'Comment 1.3'),
array('id'=>4, 'pid'=>2, 'name'=>'Comment 1.1.1'),
array('id'=>5, 'pid'=>2, 'name'=>'Comment 1.1.2'),
array('id'=>7, 'pid'=>2, 'name'=>'Comment 1.1.3'),
array('id'=>12, 'pid'=>8, 'name'=>'Comment 2.1'),
array('id'=>17, 'pid'=>8, 'name'=>'Comment 2.2'),
array('id'=>14, 'pid'=>9, 'name'=>'Comment 3.1'),
array('id'=>13, 'pid'=>12, 'name'=>'Comment 2.1.1'),
array('id'=>16, 'pid'=>13, 'name'=>'Comment 2.1.1.1'),
array('id'=>15, 'pid'=>14, 'name'=>'Comment 3.1.1'),
);

foreach ($arr as $row){
$new_arr[$row['pid']][]=$row;
}
function my_sort($data, $parent = 0)
{
$arr = $data[$parent];
foreach ($arr as $row){
echo '<div id="cat"><strong>Категории</strong></div>
<div id="catMenu" class="catMenu"><ul>'
;
echo '<li><a href="#">',$row['name'],'</a></li>';
if(isset($data[$row['id']])) my_sort($data, $row['id']);
echo '</ul></div>';
}
my_sort($new_arr, 0);

Если кто знает то помогите. Спасибо

 ! 

М
Выделяйте код тегами! [php][/php]
Winston




Спустя 4 минуты, 45 секунд (27.03.2012 - 12:32) caballero написал(а):
class MyClass
{
function my_sort($data, $parent = 0)
{
..
}
}

Спустя 18 минут, 12 секунд (27.03.2012 - 12:50) Гость_Олег написал(а):
Не работает вызов
if(isset($data[$row['id']])) my_sort($data, $row['id']);

Спустя 4 минуты, 11 секунд (27.03.2012 - 12:54) TMake написал(а):
Гость_Олег тебе же намекают

Цитата (caballero @ 27.03.2012 - 13:32)
class MyClass
{
function my_sort($data, $parent = 0)
{
..
}
}

Цитата (Гость_Олег @ 27.03.2012 - 13:50)
if(isset($data[$row['id']])) my_sort($data, $row['id']);

$qwe = new MyClass;
if(isset($data[$row['id']])) $qwe->my_sort($data, $row['id']);

Спустя 3 минуты, 4 секунды (27.03.2012 - 12:57) sl4mmer написал(а):
Цитата (Гость_Олег @ 27.03.2012 - 09:50)
Не работает вызов
if(isset($data[$row['id']])) my_sort($data, $row['id']);

Static ? не не слышали :D


public static function my_sort($data, $parent = 0){
........................
if(isset($data[$row['id']]))
self::my_sort($data, $row['id']);
..........................

}

Спустя 3 минуты, 16 секунд (27.03.2012 - 13:01) sl4mmer написал(а):
Цитата (stepan @ 27.03.2012 - 09:54)

$qwe = new MyClass;
if(isset($data[$row['id']])) $qwe->my_sort($data, $row['id']);




Предлагаешь на каждый рекурсивный проход по объекту создавать?

Спустя 15 минут, 38 секунд (27.03.2012 - 13:16) ADiel написал(а):
$this->my_sort =)))

Спустя 14 минут, 45 секунд (27.03.2012 - 13:31) TMake написал(а):
Цитата (sl4mmer @ 27.03.2012 - 14:01)
Предлагаешь на каждый рекурсивный проход по объекту создавать?

а перед рекурсией создать объект не вариант? blink.gif
И учет ресурсов нам совсем как до Китая? http://aktuba.com/classes-php.html

Спустя 10 минут, 7 секунд (27.03.2012 - 13:41) TMake написал(а):
В коде из топика не нужно создавать объект, там достаточно воспользоваться $this

Спустя 39 минут, 27 секунд (27.03.2012 - 14:21) sl4mmer написал(а):
Цитата (stepan @ 27.03.2012 - 10:31)
Цитата (sl4mmer @ 27.03.2012 - 14:01)
Предлагаешь на каждый рекурсивный проход по объекту создавать?

а перед рекурсией создать объект не вариант? blink.gif
И учет ресурсов нам совсем как до Китая? http://aktuba.com/classes-php.html









На самом деле вараинтов масса, и тут зависит от контекста использования


Статья по ссылке улыбнула - разница чисто во времени на генерацию байткода. Для продакшна это не имеет значения

Спустя 12 минут, 21 секунда (27.03.2012 - 14:33) TMake написал(а):
Цитата (sl4mmer @ 27.03.2012 - 15:21)
На самом деле вараинтов масса, и тут зависит от контекста использования

Абсолютно с тобой согласен.
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.