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