2009-06-10 76 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 2009-06-10 16:06:05

回答

0

編輯 - 沒有通過陣列讀取的問題的權利可言,哎呦..

一個foreach是要做到這一點,例如,最快的方法

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

這應該是大約五行代碼。已經有一段時間,因爲我做了PHP,但這裏的一些僞

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

當然,這打破上有不止一個等號鍵,讓您是否允許鍵具有等號它給你在他們中。

3

我總是可以遍歷它並使用爆炸。

這就是你應該做的。

+0

你絕對應該在這裏做一個循環。神祕的單行程序是很醜陋的代碼。 – 2009-06-10 16:05:52

+0

對,在php的內置功能中沒有這樣的功能。只有循環。 – Jet 2009-06-10 16:10:59

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 2009-06-10 16:31:27