2009-06-10 6 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

편집은 - 배열을 .. 으악, 오른쪽에있는 모든

foreach을 질문을 읽어 보지 않았 것은, 예를 들어,이 작업을 수행하는 가장 빠른 방법입니다

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

약 5 줄의 코드 여야합니다. 여기 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

여기 루프를 사용해야합니다. 수수한 원 - 라이너는 추악한 코드 조각입니다. –

+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