0

JSONでシリアル化されたページからPHPに数値のリストを渡しています

{"items":"[1,2,3,4]"}

私のURLではそれはただです

...&items={"items":[1,2,3,4]}

これをPHPでデコードします

$json = $_GET["items"];
$arr = json_decode($json, true);

配列を取得します

Array ( [items] => [1,2,4] )

しかし、試してみて各値を出力すると、取得できるのは単一の値だけforeachですarr["items"]

[1,2,4]

これは、反復に使用しているコードです

foreach($res["items"] as $value)
    echo $value; 

どうして私は次のようなものを得ていないのですか

1
2
4
4

2 に答える 2

5

json 文字列をよく見てください。

{"items":"[1,2,3,4]"}

よく見てください:

「[1,2,3,4]」

items は次を含む文字列であると言っています。

「[1,2,3,4]」

"を削除すれば問題ありません。

于 2012-11-27T22:01:45.963 に答える
2

あなたのシリアライズは間違っています。次のようにする必要があります。

{"items":[1,2,3]}

JSON.stringifyJSで使用するような問題を取り除くには:

var myData = {"items" : [1,2,3]},
    queryString = 'data='+encodeURIComponent(JSON.stringify(myData));

IE < 8 の場合、外部スクリプトから含める必要があります (こちらを参照):

<!--[if lt IE 8]><script src="/js/json2.js"></script><![endif]-->

とにかく、すでに配列として送信する方がはるかに簡単です:

items[0]=1&items[1]=2&items[2]=3

このようにして、より複雑な構造も送信できます。

data[items][0]=1&data[items][1]=2
// on PHP side will become
$_GET['data'] = array('items' => array(1,2))
于 2012-11-27T22:05:41.757 に答える