2016-08-26 8 views
2

도메인 확인을 위해 TPP API을 사용하지만 응답은 string입니다.다차원 배열 키와 값을 포함한 문자열 변환 PHP

  1. 세션, 반환 문자열 OK: t73484678463765

  2. 도메인 확인, 반환 문자열 다른 경우 woohoo123.nz: OK: Minimum=1&Maximum=2

  3. , 반환 문자열을 가져 그것이 &있다 OK을 반환

woohoo123.nz: ERR: 102, This is message

그러나 아이 때 ERR 그 시간이 ,

내가 같은 입력 woohoo123.nz: OK: Minimum=1&Maximum=2 및 출력이 array

[ 
    'woohoo123.nz' => [ 
     'ERR' => [ 
      'code' => 102, 
      'message' => 'This is message', 
     ] 
    ] 
] 
내가 좋아하는

다음 array

[ 
    'woohoo123.nz' => [ 
     'OK' => [ 
      'Minimum' => 1, 
      'Maximum' => 2, 
     ] 
    ] 
] 

입력 woohoo123.nz: ERR: 102, This is message과 출력을 다음과 같은 array

로 복귀 string 변환하려는있다 ~에 더 재사용 코드는 recursivecallback을 선호하지만이 경우 확실하지 않습니다.

+0

나는 당신이 원하는 것을 확신하지 못합니다. 가능한 문자열 입력과'array' /'stdClass' 출력에 대해 더 많은 예제를 제공 할 수 있습니까? –

+0

배열로 그 문자열을 변환하고 싶습니다. 문자열에':','&'및','가 포함되어 있으며 다차원 배열로 변환됩니다. @HurricaneDevelopment –

+0

함수를 다시 작성했습니다. 이 특별한 경우에만 꽤 많이 있습니다. 그것이 당신을 위해 작동하는지 알려주세요. –

답변

1

찾고있는 것이 100 % 확실하지 않습니다. 귀하의 예제에서 작동하지만 입력 문자열이 해당 형식을 엄격하게 따르는 경우에만 계속 작동합니다.

function stringToArray($inputStr) { 
    $array = []; 

    $topComponents = explode(': ',$inputStr); 
    $parametersStr = $topComponents[count($topComponents) -1]; 
    if (strpos($parametersStr,'&') !== FALSE) { 
     $tmpArr = explode('&',$parametersStr); 
     foreach ($tmpArr as $val) { 
      $comp = explode('=',$val); 
      $array[$comp[0]] = $comp[1]; 
     } 
    } else if ($topComponents[count($topComponents) - 2] === "ERR") { 
     $tmpArray = explode('ERR: ',$parametersStr); 
     $tmpArray = explode(', ',$tmpArray[0]); 
     $array = [ 
      "code" => intval($tmpArray[0]), 
      "message" => $tmpArray[1] 
     ]; 
    } else { 
     $array = $parametersStr; 
    } 

    for ($i=count($topComponents) -2; $i >= 0; $i--) { 
     $newArray = []; 
     $newArray[$topComponents[$i]] = $array; 
     $array = $newArray; 
    } 

    return $array; 
} 

print_r(stringToArray("OK: t73484678463765")); 
+0

이것이 내가 원하는 것입니다. 시간 내 줘서 고마워! –