2011-10-28 3 views
0

누구든지이 함수를 파이썬에서 PHP로 변환하는 방법을 알고 있습니까?Python에서 PHP로 함수

나는 주위를 둘러 보았지만 알아낼 수없는 파이썬 코드가 있습니다.

이 기능은 다음과 문맥에서 사용됩니다 http://www.dmcloud.net/doc/api/general.html#authentication

def normalize(input=None): 
output = '' 

if type(input) in (list, tuple): 
    for element in input: 
     if type(element) in (dict, list, tuple): 
      element = normalize(element) 
     output += str(element) 

elif type(input) is dict: 
    keys = input.keys() 
    keys.sort() 
    for key in keys: 
     element = input[key] 
     if type(element) in (dict, list, tuple): 
      element = normalize(element) 
     output += '%s%s' % (key, element) 

else: 
    output = str(input) 

return output 

감사합니다!

+0

이 기능의 사용 방법과 PHP에서 어떻게 사용 하시겠습니까? 그것은 직접 번역하지 않는 언어 특정 파이썬 기능을 사용합니다. –

+0

json 컨텐트를 공백없이 재귀 텍스트로 변환합니다. 예제를 보려면 여기를보십시오. http://www.dmcloud.net/doc/api/general.html#authentication – PGZ

답변

2

PHP 때문에, 사전 및 튜플/목록 사이에 차이가 없습니다 :

function normalize($input=null) { 
    if (! is_array($input)) { 
    return strval($input); 
    } 

    $res = ''; 
    $keys = array_keys($input); 
    sort($keys); 
    foreach ($keys as $k) { 
    if (!is_int($k)) $res .= $k; 
    $res .= normalize($v); 
    } 
    return $res; 
} 

은 특히,이 직렬화 짜증, 그것은 숫자의 정수를 구별 할 수 있기 때문이다. YOU는 실제로 언어에 구애받지 않고 사람이 읽을 수있는 직렬화 형식 인 JSON ( phpPython)을 사용해야합니다.

이 문자열을 인증에 사용하는 대신 JSON 직렬화를 통해 hash을 사용하면됩니다.

+0

감사합니다. 나는 원래 게시물에 링크를 추가했습니다. 목표는 인증 목적으로 JSON 읽을 수있는 형식을 해제하는 것입니다. – PGZ

+0

@PGZ 나는 그것을 보았고, 그것이 나쁜 생각 인 방법에 관한 문단을 추가했다. 이 PHP 코드가 당신에게 효과가 있습니까? – phihag

+0

실제로 JSON 코드를 변경하지 않습니다. – PGZ