Edit report at http://bugs.php.net/bug.php?id=33891&edit=1
ID: 33891 Comment by: wrzasq at gmail dot com Reported by: marcos dot neves at gmail dot com Summary: make array a traversable Status: Open Type: Feature/Change Request Package: Feature/Change Request Operating System: any PHP Version: 5.1.0b3 New Comment: It should also expose interfaces ArrayAccess and Countable. It's very frustrating when you use type hinting to force iterable structures or array-like accessible and it comes out that you can't pass array themselves. Previous Comments: ------------------------------------------------------------------------ [2005-07-27 22:14:08] marcos dot neves at gmail dot com Description: ------------ Traversable is an internal interface that says "I can be used in a foreach". Since array can be used too, would be nice if array be accepted internally in parameters that expect traversable. Reproduce code: --------------- <? function acceptArray(array $t) { echo "\n".__FUNCTION__."\n"; foreach($t as $k=>$v) { echo "$k=>$v\n"; } } function acceptTraversable(Traversable $t) { echo "\n".__FUNCTION__."\n"; foreach($t as $k=>$v) { echo "$k=>$v\n"; } } $test = array("is", "array", "traversable", "too", "?"); acceptArray($test); // ok acceptTraversable(new ArrayIterator($test)); // ok acceptTraversable($test); // would be nice ?> Expected result: ---------------- acceptTraversable($test); shoud accept an array, since it's too a Traversable structure(can be used in a foreach). Actual result: -------------- Fatal error: Argument 1 must be an object of class Traversable ------------------------------------------------------------------------ -- Edit this bug report at http://bugs.php.net/bug.php?id=33891&edit=1