Re: [PHP] counting nested array

2005-08-17 Thread Ing . Josué Aranda
hahaha, thanks robin you save some seconds of mi life... it looks more
"pro" with that if...

On 8/17/05, Robin Vickery <[EMAIL PROTECTED]> wrote:
> On 8/17/05, Ing. Josué Aranda <[EMAIL PROTECTED]> wrote:
> > OK this the little function i made to solve this..
> >
> > function countNested($array){
> > foreach($array as $value){
> > if(is_array($value))
> > $total=$this->countNested($value)+$total;
> > }else{
> > $total=$total+1;
> > }
> > }
> > return $total;
> > }
> 
> Looks OK-ish - there's a missing '{' on the third line but apart from
> that it should work fine as a class method.
> 
> > any optimizations are welcome
> 
> You can simplify the if-block as below, which might save you as much
> as a microsecond or two :-)
> 
>function countNested($array){
>   $total = 0;
>foreach ($array as $value) {
>$total += is_array($value) ? $this->countNested($value) : 1;
>}
>return $total;
>}
> 
> --
> PHP General Mailing List (http://www.php.net/)
> To unsubscribe, visit: http://www.php.net/unsub.php
> 
> 


-- 


JOSUE ARANDA>>>

--
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php



Re: [PHP] counting nested array

2005-08-17 Thread Robin Vickery
On 8/17/05, Ing. Josué Aranda <[EMAIL PROTECTED]> wrote:
> OK this the little function i made to solve this..
>
> function countNested($array){
> foreach($array as $value){
> if(is_array($value)) 
> $total=$this->countNested($value)+$total;
> }else{
> $total=$total+1;
> }
> }
> return $total;
> }

Looks OK-ish - there's a missing '{' on the third line but apart from
that it should work fine as a class method.
 
> any optimizations are welcome

You can simplify the if-block as below, which might save you as much
as a microsecond or two :-)

   function countNested($array){
  $total = 0;
   foreach ($array as $value) {
   $total += is_array($value) ? $this->countNested($value) : 1;
   }
   return $total;
   }

--
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php



Re: [PHP] counting nested array

2005-08-16 Thread Ing . Josué Aranda
OK this the little function i made to solve this..
[CODE]

function countNested($array){
foreach($array as $value){
if(is_array($value))
$total=$this->countNested($value)+$total;
}else{
$total=$total+1;
}
}
return $total;
}

[/CODE]

any optimizations are welcome



On 8/16/05, Robin Vickery <[EMAIL PROTECTED]> wrote:
> On 8/16/05, Ing. Josué Aranda <[EMAIL PROTECTED]> wrote:
> >
> > The number of the branches is not always the same.. (it depends on the
> > query).. when i use count($array, COUNT_RECURSIVE) for nested arrays..
> > it give to me the total including the nodes in the branches ( in this
> > case 28).. now here is the question, how i can get only the last nodes
> > in this case ... exist a easy way to do it?. or its necessary to make
> > a funcion with a bunch of foreach?.. any suggestions are welcome =o)
> > thanks!
> 
> If I understand you correctly, you only want the leaves of your tree -
> in your example, that would be 20?
> 
> I don't think there's a convenient builtin function that'll do it, but
> it's not hard to write your own:
> 
>  
> function leaf_count($item) {
>   $count = 0;
> 
>   if (!is_array($item)) { return 1; }
> 
>   foreach ($item as $element) {
> $count += leaf_count($element);
>   }
> 
>   return $count;
> }
> 
> print leaf_count($array);
> 
> ?>
> 
> --
> PHP General Mailing List (http://www.php.net/)
> To unsubscribe, visit: http://www.php.net/unsub.php
> 
> 


-- 


JOSUE ARANDA>>>

--
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php



Re: [PHP] counting nested array

2005-08-16 Thread Robin Vickery
On 8/16/05, Ing. Josué Aranda <[EMAIL PROTECTED]> wrote:
>
> The number of the branches is not always the same.. (it depends on the
> query).. when i use count($array, COUNT_RECURSIVE) for nested arrays..
> it give to me the total including the nodes in the branches ( in this
> case 28).. now here is the question, how i can get only the last nodes
> in this case ... exist a easy way to do it?. or its necessary to make
> a funcion with a bunch of foreach?.. any suggestions are welcome =o)
> thanks!

If I understand you correctly, you only want the leaves of your tree -
in your example, that would be 20?

I don't think there's a convenient builtin function that'll do it, but
it's not hard to write your own:



--
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php



Re: [PHP] counting nested array

2005-08-16 Thread Torgny Bjers
Ing. Josué Aranda wrote:

>Hi to everyone..
>
>now i have a little problem counting an nested array. Im using it to
>fill a Java TreeView... it looks like this:
>
>[snip]
>
>The number of the branches is not always the same.. (it depends on the
>query).. when i use count($array, COUNT_RECURSIVE) for nested arrays..
>it give to me the total including the nodes in the branches ( in this
>case 28).. now here is the question, how i can get only the last nodes
>in this case ... exist a easy way to do it?. or its necessary to make
>a funcion with a bunch of foreach?.. any suggestions are welcome =o) 
>thanks!
>

Well, if you do a count of the root, you ought to get the amount of
numbers in there, and, with that number of the last item, access that
array, do a count() on that, get the last item, and so forth and so on,
you could write a small recursive function here to call itself with each
new child, getting the last item, down into the structure until X level.

Not sure if there's a PHP native function for doing this, though.
Perhaps someone else knows. If nothing else, try this way.

Regards,
Torgny

-- 
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php



[PHP] counting nested array

2005-08-16 Thread Ing . Josué Aranda
Hi to everyone..

now i have a little problem counting an nested array. Im using it to
fill a Java TreeView... it looks like this:

[1] => Array
(
[1] => Array
(
[1] => Array
(
[1] => LECHE PREMIUM 1 LT
[2] => LECHE PREMIUM 1/2 GL
[3] => LECHE PREMIUM 1 GL
)

[2] => Array
(
[1] => LECHE LIGHT 1 LT
[2] => LECHE LIGHT 1/2 GL
[3] => LECHE FRESCA 1 GL LIGHT
)

[3] => Array
(
[1] => LECHE SEMI 1 LT FRESCA
[2] => LECHE DESLACTOSADA 21 DIAS 1 LT
[3] => LECHE SILUETTE 21 DIAS 1 LT
[4] => LECHE DESARROLLO 21 DIAS 1 LT
[5] => LECHE ENTERA 21 DIAS 1 LT
[6] => LECHE LIGHT 21 DIAS 1 LT
)

[5] => Array
(
[1] => LECHE FRESCA 1 GL SEMIDESCREMADA BELL
[2] => LECHE FRESCA 1/2 GL SEMIDESCREMADA BELL
)

[6] => Array
(
[1] => LECHE FRESCA 1 GL LIGHT BELL
[2] => LECHE FRESCA 1/2 GL LIGHT BELL
[3] => LECHE FRESCA 1 LT LIGHT BELL
)

[7] => Array
(
[1] => LECHE FRESCA 1 GL ENTERA BELL
[2] => LECHE FRESCA 1/2 GL ENTERA BELL
[3] => LECHE FRESCA 1LT ENTERA BELL
)

)


The number of the branches is not always the same.. (it depends on the
query).. when i use count($array, COUNT_RECURSIVE) for nested arrays..
it give to me the total including the nodes in the branches ( in this
case 28).. now here is the question, how i can get only the last nodes
in this case ... exist a easy way to do it?. or its necessary to make
a funcion with a bunch of foreach?.. any suggestions are welcome =o) 
thanks!
-- 


JOSUE ARANDA>>>

--
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php