2012-01-28 2 views
0

javascript配列を配列としてPHPで使用するためのシリアライズされた文字列に変換するこのjavascript関数があります。PHPで使用するJavascript配列のシリアライズ関数

function js_array_serialize(a) { 
    var a_php = ""; 
    var total = 0; 
    for (var key in a) { 
    ++ total; 
    a_php = a_php + "s:" + 
     String(key).length + ":\"" + String(key) + "\";s:" + 
     String(a[key]).length + ":\"" + String(a[key]) + "\";"; 
    } 
    a_php = "a:" + total + ":{" + a_php + "}"; 
    return a_php; 
} 

上記の機能は、連想配列の作業を行います。しかし、私は多次元配列を持っており、何かがforループで行われなければならない、私は他のネストされたループを考えることができます。

私のjavascript配列は、この構造は次のとおりです。

var a = { 
    'index': { 
    'subindex1': 'default', 
    'subindex2': 'default' 
    }, 
    'index2': { 
    'subindex1': 'default', 
    'subindex2': 'default' 
    } 
}; 

すべてのヘルプは高く評価されています。 ありがとう!

+2

配列をJSONに変換しようとしましたが、PHPとJavaScriptの両方で簡単に使用できます。 –

+0

php経由では大丈夫ですが、シリアライズされた文字列を生成するためにajaxやphpを使用せずにクライアント側から行うだけです。 – user558134

答えて

1

あなたはJSONホイールを改造しているようです。この方法について:

function js_array_serialize(a) { 
    return JSON.stringify(a); 
} 

JSON.stringifyの機能は、ネイティブに組み込まれた最新のブラウザです。また、従来のブラウザをサポートしたい場合は、ページにjson2.jsスクリプトを含めるだけです。

文字列連結を使用してJSONを作成しないでください。あなたが扱う必要があるより多くのケースがあります:値を正しくエスケープするようなもの。値に引用符が含まれているとしますか?シリアライゼーションアルゴリズムが壊れます。

+0

質問者に[Data Exchange Formats](http://en.wikipedia.org/wiki/Data_exchange)の記事を指すのが良い時期です – JonnyReeves

+0

しかし、それは文字列をPHP関数serialize($ a)。 – user558134

+0

@ user558134では、PHPでjson_encodeとjson_decodeを使用できます。 –

関連する問題