Doc #65221 [Com]: Does not adequately explain nature of how list retrieves values from an array

From: Date: Wed, 10 Jul 2013 04:02:03 +0000
Subject: Doc #65221 [Com]: Does not adequately explain nature of how list retrieves values from an array
References: 1  Groups: php.doc.bugs 
Request: Send a blank email to doc-bugs+get-10063@lists.php.net to get a copy of this message
Edit report at https://bugs.php.net/bug.php?id=65221&edit=1 ID: 65221 Comment by: lucas at threeamdesign dot com dot au Reported by: lucas at threeamdesign dot com Summary: Does not adequately explain nature of how list retrieves values from an array Status: Open Type: Documentation Problem Package: Documentation problem PHP Version: Irrelevant Block user comment: N Private report: N New Comment: What's the benefit of breaking the current functionality? I don't think it behaves in an implementation-specific way now, so it shouldn't in the future. It'd be better to show the example with array_values() as well: <?php $foo = array(2 => 'a', 'foo' => 'b', 0 => 'c'); $foo[1] = 'd'; var_dump($foo); echo PHP_EOL; list($x, $y, $z) = $foo; var_dump($x, $y, $z); echo PHP_EOL; list($x, $y, $z) = array_values($foo); var_dump($x, $y, $z); ?> produces: array(4) { [2]=> string(1) "a" ["foo"]=> string(1) "b" [0]=> string(1) "c" [1]=> string(1) "d" } string(1) "c" string(1) "d" string(1) "a" string(1) "a" string(1) "b" string(1) "c" Previous Comments: ------------------------------------------------------------------------ [2013-07-09 23:38:12] cmbecker69 at gmx dot de It seems to me that the proposed description might be an overspecification of the functionality. According to <http://php.net/function.list>: | list() only works on numerical arrays and assumes | the numerical indices start at 0. Anything else might be regarded as depeding on the implementation, and might change in a future release. ------------------------------------------------------------------------ [2013-07-09 06:42:30] lucas at threeamdesign dot com dot au Sorry, missed that note. I'm sure many others have and will. I still think it needs the example. ------------------------------------------------------------------------ [2013-07-09 04:28:27] gabri dot ns at gmail dot com it is already mentioned in a note at the bottom of the page. still, its true that it would be better if thus note moved up at the main description. ------------------------------------------------------------------------ [2013-07-09 03:53:53] lucas at threeamdesign dot com Description: ------------ --- From manual page: http://www.php.net/function.list --- The main description for the construct should specify that it only operates on numeric indices of an array (i.e. string keys are ignored) and expects them to be consecutive and starting at 0. It should also state that the order in which the indices were defined is irrelevant. Test script: --------------- This behaviour could be explained clearly, like so: <?php $foo = array(2 => 'a', 'foo' => 'b', 0 => 'c'); $foo[1] = 'd'; list($x, $y, $z) = $foo; var_dump($foo, $x, $y, $z); ?> produces the following result: array(4) { [2]=> string(1) "a" ["foo"]=> string(1) "b" [0]=> string(1) "c" [1]=> string(1) "d" } string(1) "c" string(1) "d" string(1) "a" ------------------------------------------------------------------------ -- Edit this bug report at https://bugs.php.net/bug.php?id=65221&edit=1

« previous php.doc.bugs (#10063) next »