3

御時間ありがとうございます:

まず、次のJson文字列があります

$jsonarr = '["somestring1", "somestring2","somestring3"]'

PHP配列に変換したい

$decodedjson = json_decode($jsonarr,TRUE);

次に、次のような配列のすべてのメンバーを反復処理します。

for ($i=0;$i<3;$i++)
{
    echo $decodedjson[$i];
}

まず、この配列の長さを取得することは可能ですか?

次に、このコードはエラーをスローします。どこが間違っているのかわかりません。

お時間をいただきありがとうございます。

4

4 に答える 4

1

私が見る唯一のエラーは、最初の行にセミコロンがないことです。次のように長さを取得できます。

count($decodedjson);
于 2013-10-25T21:01:36.710 に答える
1

count()はい、以下のような関数で配列の長さを取得できます:

$jsonarr = '["somestring1", "somestring2","somestring3"]' ;
$decodedjson = json_decode($jsonarr);

for ($i=0;$i < count($decodedjson);$i++) 
{
    echo $decodedjson[$i] . '<br>';
}
于 2013-10-25T21:03:27.287 に答える
1

json_decode() によって返された配列が有効であれば、はい。あなたはただ呼び出す必要があります:

 count($decodedjson);

しかし、最初に、$decodedjson の var_dump を実行してみてください。どのようにデコードされるかがわかります。null に等しい場合、json_decode() 呼び出しは失敗しました。json_last_error() でエラー コードを取得できます (エラー コードのリスト: http://php.net/manual/en/function.json-last-error.php )

より速く、長さを知らずに配列を繰り返し処理したい場合は、for ループの代わりに foreach を使用するだけです。

そして、ええ、Akshay が言ったように、あなたが得ているエラーを共有してください。頑張ってください。

于 2013-10-25T21:03:42.087 に答える
0

いつものようforeachに、オブジェクト/配列を反復処理するために使用できます:

foreach ($decodedjson as $key => $value) {
    echo $key . ' => ' .$value;
}
于 2013-10-25T21:11:35.063 に答える