Sterling Hughes wrote:

>>Hmm sounds a bit weird to me but if it's really useful than it's OK :)
>>
>>
>     I have to agree, and its really not that hard to implement in user
>     space::
> 
>     function count_recursive($ar) {
>         $total = 0;
> 
>         foreach ($ar as $e => $val) {
>             if (is_array($val)) {
>                 $total += count_recursive($val);
>             }
>             else {
>                 $total++;
>             }
>         }
> 
>         return $total;
>     }
> 
>     To me its seems like YACFA (Yet another confusing function
>     argument).
> 
>     -Sterling
> 


It's not hard, but it could be very *slow*...
Loop and function call in PHP script is slow in general :)
Since it's a O(n), so it may be okay to be slow, though.

--
Yasuo Ohgaki

> 
>>Andi
>>
>>
>>At 06:54 PM 1/9/2002 +0100, [EMAIL PROTECTED] wrote:
>>
>>>On Wed, 9 Jan 2002, Andi Gutmans wrote:
>>>
>>>
>>>>Why is this useful?
>>>>
>>>To count the nodes in a tree:
>>>
>>>$ar = array (
>>>       "child1" => array ("child2", "child3", "child4"),
>>>       "child5" => array ("child6", "child7", "child8")
>>>     );
>>>
>>>(maybe a louzy example, but you should get the idea :)
>>>
>>>Derick
>>>
>>>
>>>>At 06:50 PM 1/9/2002 +0100, [EMAIL PROTECTED] wrote:
>>>>
>>>>>On Wed, 9 Jan 2002, Andi Gutmans wrote:
>>>>>
>>>>>
>>>>>>Was this in 4.1.1?
>>>>>>
>>>>>No, only on the 4.2.0 branch.
>>>>>
>>>>>Derick
>>>>>
>>>>>
>>>>>>At 06:49 PM 1/9/2002 +0100, [EMAIL PROTECTED] wrote:
>>>>>>
>>>>>>>On Wed, 9 Jan 2002, Andi Gutmans wrote:
>>>>>>>
>>>>>>>
>>>>>>>>Isn't this the function we decided to nuke?
>>>>>>>>
>>>>>>>Nope, that was is_array_multidimensional(). I'll check if it's 
>>>>>>>
>>>nuked, is
>>>
>>>>>>>not, I'll nuke it.
>>>>>>>
>>>>>>>Derick
>>>>>>>
>>>>>>>
>>>>>>>>Andi
>>>>>>>>
>>>>>>>>At 04:03 PM 1/9/2002 +0000, Derick Rethans wrote:
>>>>>>>>
>>>>>>>>>derick          Wed Jan  9 11:03:36 2002 EDT
>>>>>>>>>
>>>>>>>>>  Modified files:
>>>>>>>>>    /php4/ext/standard  array.c
>>>>>>>>>    /php4/ext/standard/tests/array      count_recursive.phpt
>>>>>>>>>  Log:
>>>>>>>>>  - Fix bug introduced in earlier patch
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>Index: php4/ext/standard/array.c
>>>>>>>>>diff -u php4/ext/standard/array.c:1.151
>>>>>>>>>
>>>>>php4/ext/standard/array.c:1.152
>>>>>
>>>>>>>>>--- php4/ext/standard/array.c:1.151     Sat Dec 29 15:59:59 2001
>>>>>>>>>+++ php4/ext/standard/array.c   Wed Jan  9 11:03:34 2002
>>>>>>>>>@@ -21,7 +21,7 @@
>>>>>>>>>
>>>>>>>>>
>>>+----------------------------------------------------------------------+
>>>
>>>>>>>>> */
>>>>>>>>>
>>>>>>>>>-/* $Id: array.c,v 1.151 2001/12/29 20:59:59 derick Exp $ */
>>>>>>>>>+/* $Id: array.c,v 1.152 2002/01/09 16:03:34 derick Exp $ */
>>>>>>>>>
>>>>>>>>> #include "php.h"
>>>>>>>>> #include "php_ini.h"
>>>>>>>>>@@ -260,11 +260,16 @@
>>>>>>>>>        if (zend_parse_parameters (ZEND_NUM_ARGS() TSRMLS_CC, 
>>>>>>>>>
>>>"z|l",
>>>
>>>>>>>>>&array, &mode) == FAILURE)
>>>>>>>>>                return;
>>>>>>>>>
>>>>>>>>>-       if (Z_TYPE_P(array) == IS_ARRAY) {
>>>>>>>>>-               RETURN_LONG (php_count_recursive (array, mode));
>>>>>>>>>-       } else {
>>>>>>>>>-               /* return 1 for non-array arguments */
>>>>>>>>>-               RETURN_LONG(1);
>>>>>>>>>+       switch (Z_TYPE_P(array)) {
>>>>>>>>>+               case IS_NULL:
>>>>>>>>>+                       RETURN_LONG(0);
>>>>>>>>>+                       break;
>>>>>>>>>+               case IS_ARRAY:
>>>>>>>>>+                       RETURN_LONG (php_count_recursive (array,
>>>>>>>>>
>>>>>mode));
>>>>>
>>>>>>>>>+                       break;
>>>>>>>>>+               default:
>>>>>>>>>+                       RETURN_LONG(1);
>>>>>>>>>+                       break;
>>>>>>>>>        }
>>>>>>>>> }
>>>>>>>>> /* }}} */
>>>>>>>>>Index: php4/ext/standard/tests/array/count_recursive.phpt
>>>>>>>>>diff -u php4/ext/standard/tests/array/count_recursive.phpt:1.1
>>>>>>>>>php4/ext/standard/tests/array/count_recursive.phpt:1.2
>>>>>>>>>---
>>>>>>>>>
>>>>>php4/ext/standard/tests/array/count_recursive.phpt:1.1      Sat Dec 29
>>>>>
>>>>>>>>>16:05:03 2001
>>>>>>>>>+++ php4/ext/standard/tests/array/count_recursive.phpt  Wed Jan  
>>>>>>>>>
>>>9
>>>
>>>>>>>>>11:03:36 2002
>>>>>>>>>@@ -4,6 +4,11 @@
>>>>>>>>> --GET--
>>>>>>>>> --FILE--
>>>>>>>>> <?php
>>>>>>>>>+print "Testing NULL...\n";
>>>>>>>>>+$arr = NULL;
>>>>>>>>>+print "COUNT_NORMAL: should be 0, is ".count($arr,
>>>>>>>>>
>>>>>COUNT_NORMAL)."\n";
>>>>>
>>>>>>>>>+print "COUNT_RECURSIVE: should be 0, is ".count($arr,
>>>>>>>>>
>>>>>>>COUNT_RECURSIVE)."\n";
>>>>>>>
>>>>>>>>>+
>>>>>>>>> print "Testing arrays...\n";
>>>>>>>>> $arr = array(1, array(3, 4, array(6, array(8))));
>>>>>>>>> print "COUNT_NORMAL: should be 2, is ".count($arr,
>>>>>>>>>
>>>>>COUNT_NORMAL)."\n";
>>>>>
>>>>>>>>>@@ -23,6 +28,9 @@
>>>>>>>>> print "COUNT_NORMAL: should be 2, is ".count(array("a",
>>>>>>>>>
>>>>>>>array("b")))."\n";
>>>>>>>
>>>>>>>>> ?>
>>>>>>>>> --EXPECT--
>>>>>>>>>+Testing NULL...
>>>>>>>>>+COUNT_NORMAL: should be 0, is 0
>>>>>>>>>+COUNT_RECURSIVE: should be 0, is 0
>>>>>>>>> Testing arrays...
>>>>>>>>> COUNT_NORMAL: should be 2, is 2
>>>>>>>>> COUNT_RECURSIVE: should be 8, is 8
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>--
>>>>>>>>>PHP CVS Mailing List (http://www.php.net/)
>>>>>>>>>To unsubscribe, e-mail: [EMAIL PROTECTED]
>>>>>>>>>For additional commands, e-mail: [EMAIL PROTECTED]
>>>>>>>>>To contact the list administrators, e-mail:
>>>>>>>>>
>>>>>[EMAIL PROTECTED]
>>>>>
>>>>>>>>
>>>>>>>>--
>>>>>>>>PHP CVS Mailing List (http://www.php.net/)
>>>>>>>>To unsubscribe, e-mail: [EMAIL PROTECTED]
>>>>>>>>For additional commands, e-mail: [EMAIL PROTECTED]
>>>>>>>>To contact the list administrators, e-mail:
>>>>>>>>
>>>>>[EMAIL PROTECTED]
>>>>>
>>>>>
>>>>>--
>>>>>PHP CVS Mailing List (http://www.php.net/)
>>>>>To unsubscribe, e-mail: [EMAIL PROTECTED]
>>>>>For additional commands, e-mail: [EMAIL PROTECTED]
>>>>>To contact the list administrators, e-mail: [EMAIL PROTECTED]
>>>>>
>>>
>>>--
>>>PHP CVS Mailing List (http://www.php.net/)
>>>To unsubscribe, e-mail: [EMAIL PROTECTED]
>>>For additional commands, e-mail: [EMAIL PROTECTED]
>>>To contact the list administrators, e-mail: [EMAIL PROTECTED]
>>>
>>
>>-- 
>>PHP CVS Mailing List (http://www.php.net/)
>>To unsubscribe, e-mail: [EMAIL PROTECTED]
>>For additional commands, e-mail: [EMAIL PROTECTED]
>>To contact the list administrators, e-mail: [EMAIL PROTECTED]
>>
>>


-- 
PHP Development Mailing List <http://www.php.net/>
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
To contact the list administrators, e-mail: [EMAIL PROTECTED]

Reply via email to