bbutle01
bbutle01

Reputation: 521

php array processing question

Before I write my own function to do it, is there any built-in function, or simple one-liner to convert:

Array
(
    [0] => pg_response_type=D
    [1] => pg_response_code=U51
    [2] => pg_response_description=MERCHANT STATUS
    [3] => pg_trace_number=477DD76B-B608-4318-882A-67C051A636A6
)

Into:

Array
(
    [pg_response_type] => D
    [pg_response_code] =>U51
    [pg_response_description] =>MERCHANT STATUS
    [pg_trace_number] =>477DD76B-B608-4318-882A-67C051A636A6
)

Just trying to avoid reinventing the wheel. I can always loop through it and use explode.

Upvotes: 2

Views: 228

Answers (4)

Ionuț G. Stan
Ionuț G. Stan

Reputation: 179139

You could do it like this:

$foo = array(
    'pg_response_type=D',
    'pg_response_code=U51',
    'pg_response_description=MERCHANT STATUS',
    'pg_trace_number=477DD76B-B608-4318-882A-67C051A636A6',
);

parse_str(implode('&', $foo), $foo);

var_dump($foo);

Just be sure to encapsulate this code in a function whose name conveys the intent.

Upvotes: 0

belgariontheking
belgariontheking

Reputation: 1349

This should be around five lines of code. Been a while since I've done PHP but here's some pseudocode

foreach element in the array
explode result on the equals sign, set limit = 2
assign that key/value pair into a new array.

Of course, this breaks on keys that have more than one equals sign, so it's up to you whether you want to allow keys to have equals signs in them.

Upvotes: 0

SilentGhost
SilentGhost

Reputation: 319621

I can always loop through it and use explode.

that's what you should do.

Upvotes: 3

ConroyP
ConroyP

Reputation: 41916

Edit - didn't read the question right at all, whoops..

A foreach through the array is the quickest way to do this, e.g.

foreach($arr as $key=>$val)
{
    $new_vals = explode("=", $val);
    $new_arr[$new_vals[0]] = $new_vals[1];
}

Upvotes: 0

Related Questions