Re: cvs: php4 /ext/standard array.c /ext/standard/tests/array count_recursive.phpt
| From: | Sterling Hughes | Date: | Wed, 09 Jan 2002 18:04:02 +0000 |
| Subject: | Re: cvs: php4 /ext/standard array.c /ext/standard/tests/array count_recursive.phpt | ||
| References: | 1 2 | Groups: | php.cvs |
| Request: | Send a blank email to php-cvs+get-9005@lists.php.net to get a copy of this message | ||
> 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
> 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
>