2011-10-28 19 views
0

誰でもこの関数をPythonからPHPに変換する方法を知っていますか?PythonからPHPへの関数

私は周りにいましたが、私が理解できないPythonコードのものがあります。

この機能は、次のコンテキストで使用されます。 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での使用方法を詳しく説明できますか?それは直接翻訳しない言語固有のPython機能を使用します。 –

+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; 
} 

、この連載では、吸います。実際には、言語に依存しない、人間が読める形式のJSON(phpおよびPython)を使用する必要があります。

この文字列を認証に使用する代わりに、JSONのシリアル化でhashを単に使用してください。

+0

ありがとう。元の投稿にリンクを追加しました。目的は、認証目的でJSON読み取り可能な形式を破ることです。 – PGZ

+0

@PGZ私はそれを見て、どのように悪い考えであるかについての段落を追加しました。このPHPコードはあなたのために働くのですか? – phihag

+0

実際にはJSONコードを変更しません。 – PGZ

関連する問題