Re: [PHP] array conversion

[email protected] (Adam Richardson)
Newsgroups php.general
Message-ID <[email protected]>
Or,

function new_arr(array $arr)
{
    $count = count($arr);
    if ($count % 2 != 0) throw new Exception('The new_arr() function
requires an even number of elements.');
    for ($i = 0; $i < $count; $i += 2)
    {
        $new_arr[$arr[$i]] = $arr[$i + 1];
    }
    return $new_arr;
}

$test = new_arr(array('k1', 'v1', 'k2', 'v2', 'k3', 'v3'));

exit(var_dump($test));

On Fri, Feb 19, 2010 at 1:19 AM, Larry Garfield <[email protected]>wrote:

> On Thursday 18 February 2010 11:58:28 pm Paul M Foster wrote:
> > On Fri, Feb 19, 2010 at 01:20:12PM +0800, Dasn wrote:
> > > Hi guys. How to convert an array like:
> > >
> > > Array
> > > (
> > >     [0] => key1
> > >     [1] => value1
> > >     [2] => key2
> > >     [3] => value2
> > > )
> > >
> > > to
> > >
> > >
> > > Array
> > > (
> > >     [key1] => value1
> > >     [key2] => value2
> > > )
> > >
> > > Is there a built-in function to do this?
> > > Please Cc me. :)
> > > Thank you in advance.
> >
> > I don't believe so, but rolling your own should not be too hard:
> >
> > $a = array($key1, $value1, $key2, $value2);
> > $b = array();
> > $numitems = count($a);
> >
> > for ($i = 0; $i < $numitems; $i++) {
> >       if ($i % 2 == 0) {
> >               $saved_key = $a[$i];
> >       }
> >       elseif ($i % 2 == 1) {
> >               $b[$saved_key] = $a[$i];
> >       }
> > }
> >
> > Code is crude and untested, but you get the idea.
> >
> > Paul
>
> This would be even shorter, I think:
>
> foreach ($items as $i => $value) {
>  $temp[$i % 2][] = $value;
> }
> $done = array_combine($temp[0], $temp[1]);
>
> (Also untested, just off the cuff...)
>
> --Larry Garfield
>
> --
> PHP General Mailing List (http://www.php.net/)
> To unsubscribe, visit: http://www.php.net/unsub.php
>
>


-- 
Nephtali:  PHP web framework that functions beautifully
http://nephtaliproject.com
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.