> 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.
>

    Well, yeah, but then let's just make PHP a templating engine and
    write all our logic in C & C++!!  PHP has evolved to the point where
    I think its ok to code a majority of the business logic in PHP
    instead of C.

    A performance critical script wouldn't do a recursive count anyhow,
    it just wouldn't make sense.

    -Sterling

> --
> 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]
> 

-- 
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