Re: cvs: php4 /ext/standard array.c /ext/standard/tests/array count_recursive.phpt

From: Date: Thu, 10 Jan 2002 06:16:34 +0000
Subject: Re: cvs: php4 /ext/standard array.c /ext/standard/tests/array count_recursive.phpt
References: 1  Groups: php.cvs 
Request: Send a blank email to php-cvs+get-9019@lists.php.net to get a copy of this message
On Wed, 9 Jan 2002, 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:: You, I agree too :) Derick > > 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 > > > Andi > > > > > > At 06:54 PM 1/9/2002 +0100, derick@php.net 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, derick@php.net 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, derick@php.net 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: php-cvs-unsubscribe@lists.php.net > > >> > > > > >For additional commands, e-mail: > > >> > > > > >php-cvs-help@lists.php.net > > >> > > > > >To contact the list administrators, e-mail: > > >> > php-list-admin@lists.php.net > > >> > > > > > > >> > > > > > > >> > > > > -- > > >> > > > > PHP CVS Mailing List (http://www.php.net/) > > >> > > > > To unsubscribe, e-mail: php-cvs-unsubscribe@lists.php.net > > >> > > > > For additional commands, e-mail: php-cvs-help@lists.php.net > > >> > > > > To contact the list administrators, e-mail: > > >> > php-list-admin@lists.php.net > > >> > > > > > > >> > > > > >> > > > >> > > > >> >-- > > >> >PHP CVS Mailing List (http://www.php.net/) > > >> >To unsubscribe, e-mail: php-cvs-unsubscribe@lists.php.net > > >> >For additional commands, e-mail: php-cvs-help@lists.php.net > > >> >To contact the list administrators, e-mail: php-list-admin@lists.php.net > > >> > > > > > > > > >-- > > >PHP CVS Mailing List (http://www.php.net/) > > >To unsubscribe, e-mail: php-cvs-unsubscribe@lists.php.net > > >For additional commands, e-mail: php-cvs-help@lists.php.net > > >To contact the list administrators, e-mail: php-list-admin@lists.php.net > > > > > > -- > > PHP CVS Mailing List (http://www.php.net/) > > To unsubscribe, e-mail: php-cvs-unsubscribe@lists.php.net > > For additional commands, e-mail: php-cvs-help@lists.php.net > > To contact the list administrators, e-mail: php-list-admin@lists.php.net > > > > -- > PHP CVS Mailing List (http://www.php.net/) > To unsubscribe, e-mail: php-cvs-unsubscribe@lists.php.net > For additional commands, e-mail: php-cvs-help@lists.php.net > To contact the list administrators, e-mail: php-list-admin@lists.php.net >

« previous php.cvs (#9019) next »