Req #5889 [Com]: pack() does not take arrays

From: Date: Tue, 22 Mar 2011 18:00:28 +0000
Subject: Req #5889 [Com]: pack() does not take arrays
References: 1  Groups: php.bugs 
Request: Send a blank email to php-bugs+get-159710@lists.php.net to get a copy of this message
Edit report at http://bugs.php.net/bug.php?id=5889&edit=1

 ID:                 5889
 Comment by:         joshua at gmail dot com
 Reported by:        tomwk at audiogalaxy dot com
 Summary:            pack() does not take arrays
 Status:             Wont fix
 Type:               Feature/Change Request
 Package:            Feature/Change Request
 Operating System:   Redhat Linux
 PHP Version:        4.0.1pl2
 Block user comment: N
 Private report:     N

 New Comment:

Yes, it WILL be implemented


Previous Comments:
------------------------------------------------------------------------
[2004-06-14 10:49:20] magnus@php.net

This will not be implemented.

------------------------------------------------------------------------
[2000-08-01 10:22:25] stas@php.net

Well, functions args work differently in perl and PHP. Maybe we need
some "array" type of pack modifier, because PHP does not convert
function arguments to array. Though, you can write a wrapper function
using func_get_args() and func_num_args() for this.

------------------------------------------------------------------------
[2000-08-01 09:51:18] tomwk at audiogalaxy dot com

I have an application that writes data across our network
to another program.  Most of the data consists of integer arrays.  I'm
currently doing this in a very simple manner,
using something like this:

for( $i = 0; $i < $numInts; $i++ ) {
  fwrite( $fd, pack( "N", $ints[ $i ] ) );
}

However, this results in a very large number of calls to 
fwrite, which is bad for performance.  I made the routine
about 3 times faster by doing something like this:

fwrite( $fd, pack( "N10" 
  $ints[ $i + 0 ],
  $ints[ $i + 1 ],
  $ints[ $i + 2 ], ///.. and so on, 

However, it would be really great if pack could take an array as one of
it's arguments.  I believe this is the way 
Perl behaves, but when I try:

$data = array( 10, 123 );
$buf = pack( "N*", $data );

$valArray = unpack( "N*", $buf );

while( list( $key, $val ) = each( $valArray ) ) {
    echo "$key -> $val\n";
}

the only output I get is:

1 -> 1




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



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


Thread (1 message)

  • joshua at gmail dot com
  • Unknown Message
    • joshua at gmail dot com
« previous php.bugs (#159710) next »