2009-06-10 14 views
2

私はそれを行うには自分自身の関数を書く前に、任意の組み込み関数がある、または単純なワンライナーを変換するには:PHPの配列処理質問

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 
) 

の中へ:

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

だけ車輪の再発明を避けようとしている。私はいつもそれを通してループし、爆発を使用することができます。

+0

まあ、私はなってしまっている: 機能expand_array($配列){ \t foreachの($値として$配列){ \t \t $ペア=爆発( "="、$値); \t \t $ newarray [$ pair [0]] = $ pair [1]; \t \t} \t \t return $ newarray; \t} – bbutle01

答えて

0

編集 - 配列によるおっと、右のすべての質問を読んでいない...

A foreachは、例えば、これを実行する最も簡単な方法です

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

これは約5行のコードである必要があります。私はもちろん

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

いくつかの擬似コードをPHPをやったが、ここだきましたので、しばらくして、これは1つが等号以上のものを持っているキーに壊れるので、等号あなたはキーを持つことができるようにするかどうかはあなた次第ですそれらの中に。

3

いつでもループして爆発することができます。

これはあなたがすべきことです。

+0

あなたは間違いなくここでループを行う必要があります。不可解なワンライナーは醜いコードです。 –

+0

右のように、このような機能はPHPのビルトインではありません。ループのみ。 – Jet

0

あなたはこのようにそれを行うことができます:

$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); 

ただ、名前が意図を伝える機能で、このコードをカプセル化するようにしてください。

+0

と値にアンパサンドは含まれていないはずです。 – SilentGhost