Edit report at http://bugs.php.net/bug.php?id=54734&edit=1

 ID:                 54734
 Updated by:         [email protected]
 Reported by:        [email protected]
 Summary:            unpack() forces use of associative arrays
-Status:             Open
+Status:             Feedback
 Type:               Feature/Change Request
 Package:            Strings related
 Operating System:   *
 PHP Version:        5.3.6
 Block user comment: N
 Private report:     N

 New Comment:

The userland workaround is rather trivial though, isn't it?



list(, $value1, $value2) = array_values(unpack("CnCnC", $packet));



array_values() is quick, but I guess your performance worry is the
needless 

creation of the associative array in the first place?


Previous Comments:
------------------------------------------------------------------------
[2011-05-14 06:41:56] [email protected]

Description:
------------
The unpack() function returns only associative arrays. In some
situations it's advantageous to work with an indexed array instead. For
example, this code, parsing a fictional network packet format:



$packet = "\x01\x05\x05\x01\x05\x05\x01";

$values = unpack("Cpadding/nvalue1/Cpadding/nvalue2/Cpadding",
$packet);



might be more clear when written this way:



list(, $value1, , $value2, ) = unpack("CnCnC", $packet);



Implementing a fully compatible workaround in userland is at least
mildly annoying (as well as slow), and it's pretty simple to add to the
engine.



------------------------------------------------------------------------



-- 
Edit this bug report at http://bugs.php.net/bug.php?id=54734&edit=1

Reply via email to