<?php
$arr = array(
'poter' => array(
1,
2,
3=>array(1,2,3)
),
);
function myCount($arr, $mode){
if(is_null($arr)){
return 0;
}
if(!is_array($arr))
return 1;
$cnt = 0;
foreach($arr AS $v){
if($mode == 1 AND is_array($v))
$cnt += myCount($v, 1);
$cnt++;
}
return $cnt;
}
echo myCount($arr, 1);
?>
Спустя 56 минут, 23 секунды (8.09.2011 - 19:13) redreem написал(а):
что такое в вашем понимании "итерация"?
Спустя 13 минут, 52 секунды (8.09.2011 - 19:27) poter написал(а):
Цитата (redreem @ 8.09.2011 - 16:13) |
что такое в вашем понимании "итерация"? |
циклом
Спустя 12 часов, 53 минуты, 32 секунды (9.09.2011 - 08:21) linker написал(а):
А чем вас рекурсия не устраивает?
Спустя 6 часов, 6 минут, 40 секунд (9.09.2011 - 14:27) poter написал(а):
Цитата (linker @ 9.09.2011 - 05:21) |
А чем вас рекурсия не устраивает? |
просто интересно увидеть как это будет выглядеть с циклом
Спустя 4 часа, 20 минут, 58 секунд (9.09.2011 - 18:48) redreem написал(а):
например так:
замечания:
1. насколько я понимаю вам нужно подсчитывать количество узлов.
2. если глубина узлов будет больше, то пример работать не будет.
3. для произвольной глубины узлов так же есть решение циклом (делал себе нерекурсивный обход дерева, могу адаптировать под ваши данные).
function myCount2($arr){
$cnt = 0;
foreach($arr AS $v1) {
if (is_array($v1)) {
$cnt++;
foreach($v1 AS $v2) {
if (is_array($v2)) {
$cnt++;
foreach($v2 AS $v3) {
$cnt++;
}
} else $cnt++;
}
} else $cnt++;
}
return $cnt;
}
замечания:
1. насколько я понимаю вам нужно подсчитывать количество узлов.
2. если глубина узлов будет больше, то пример работать не будет.
3. для произвольной глубины узлов так же есть решение циклом (делал себе нерекурсивный обход дерева, могу адаптировать под ваши данные).
Спустя 17 часов, 14 минут, 9 секунд (10.09.2011 - 12:02) poter написал(а):
Цитата (redreem @ 9.09.2011 - 15:48) |
например так:function myCount2($arr){ замечания: 1. насколько я понимаю вам нужно подсчитывать количество узлов. 2. если глубина узлов будет больше, то пример работать не будет. 3. для произвольной глубины узлов так же есть решение циклом (делал себе нерекурсивный обход дерева, могу адаптировать под ваши данные). |
3. для произвольной глубины узлов так же есть решение циклом (делал себе нерекурсивный обход дерева, могу адаптировать под ваши данные). Хотеел бы увидеть этот пример
Спустя 7 минут, 6 секунд (10.09.2011 - 12:09) redreem написал(а):
извините, но это уже выходит за рамки "взаимопомощи". попотел изрядно для оного кода.
Спустя 1 месяц, 6 дней, 9 часов, 53 минуты, 21 секунда (16.10.2011 - 22:03) poter написал(а):
помогите пжл !!!
Спустя 8 минут, 22 секунды (16.10.2011 - 22:11) redreem написал(а):
че, препод лабу не принял?
Спустя 33 минуты, 27 секунд (16.10.2011 - 22:45) poter написал(а):
Цитата (redreem @ 16.10.2011 - 19:11) |
че, препод лабу не принял? |
лучше б помог =(
Спустя 2 минуты, 56 секунд (16.10.2011 - 22:48) redreem написал(а):
ну мы ж все тут взрослые люди и понимаем что к чему. если б ты не сказал преподу что сможешь решить задачу для произвольной глубины - проблемы бы небыло. ты бы получил твердую четверку. я напишу тебе решение. но это требует времени. а время - ...
Спустя 5 минут, 13 секунд (16.10.2011 - 22:53) redreem написал(а):
и вообще - ты уверен что твой препод не сидит на этом же форуме? а может вообще это я твой препод?

Спустя 33 секунды (16.10.2011 - 22:53) redreem написал(а):
я просто вчера "Липучку" посмотрел - вот и прет

Спустя 6 минут, 20 секунд (16.10.2011 - 23:00) redreem написал(а):
я парсю все php-форумы по фильтру заданий своим студентам. это у меня автоматом. как аська сбоку. даже не надейся!

Спустя 16 минут, 2 секунды (16.10.2011 - 23:16) imbalance_hero написал(а):
redreem
5+ Бедный парень теперь в глаза своему преподу не сможет смотреть...
Будет думать, что это ты...
5+ Бедный парень теперь в глаза своему преподу не сможет смотреть...

Спустя 2 минуты, 6 секунд (16.10.2011 - 23:18) redreem написал(а):
poter, да ладно, шучу я. но если по делу - то только за бабло. это работа парень. и мы на нее УЧИЛИСЬ, тратили время вместо того чтобы попить пивка и покутить.
Спустя 7 минут, 25 секунд (16.10.2011 - 23:25) redreem написал(а):
если это сообщение читает препод potera - сделай красиво, не кричи что ты redreem... я ща абасцусь... все убежал в туалет...
Спустя 15 минут, 46 секунд (16.10.2011 - 23:41) imbalance_hero написал(а):
redreem
Ты это к чему?!
Ты это к чему?!
Спустя 15 часов, 37 минут, 13 секунд (17.10.2011 - 15:18) poter написал(а):
Цитата (redreem @ 16.10.2011 - 20:00) |
я парсю все php-форумы по фильтру заданий своим студентам. это у меня автоматом. как аська сбоку. даже не надейся! ![]() |
ты точно не мой препод =)
Спустя 2 часа, 49 минут, 22 секунды (17.10.2011 - 18:08) redreem написал(а):
я же не сказал что я пользуюсь аськой

Спустя 5 дней, 3 часа, 41 минута, 3 секунды (22.10.2011 - 21:49) dog написал(а):
$a = array(0,1,1,array(1,1,array(2,2,3,4,5),2,array(2,2,2,array(5,4,2,1,2,2),2)));
$c = 0;
$p = array();
do {
if (is_null(key($a))) {
if (!$p)
break;
$a = end($p);
unset($p[key($p)]);
next($a);
continue;
}
$cur = current($a);
if (!is_array($cur))
$c+=$cur;
else {
$p[] = $a;
$a = $cur;
reset($a);
continue;
}
next($a);
} while (true);
Спустя 6 минут, 7 секунд (22.10.2011 - 21:55) dog написал(а):
делал для подсчёта суммы эл-в.
если поменять $c+=$cur; на $c++; будет считать их кол-во.
насчёт времени: написание кода заняло 5 минут, эм... сложно было человеку помочь? ато он меня затрахал в асе, уже 3 раза его в игнор посылал.
если поменять $c+=$cur; на $c++; будет считать их кол-во.
насчёт времени: написание кода заняло 5 минут, эм... сложно было человеку помочь? ато он меня затрахал в асе, уже 3 раза его в игнор посылал.