1

PHPでjsonファイルをデコードしようとしています。

function ReturnJson(){
    $json_data =  json_decode(file_get_contents('data.json'), true);
    for ($i = 0, $len = count($json_data); $i< $len; ++$i){

        $json_data[$i]['num'] = (string) ($i +1);
    }
    print_r($json_data);
    return $json_data;   
   }

ただし、ここでは、元のファイルから欠落している配列に約 20 文字が欠落していることに気付きました。

考え?

ここに json ドキュメントの小さなスニペットがあります。これは巨大ですが、最初の部分自体が元のドキュメントとは異なります

小さな元のファイル:

  {"events":[{"control":null,"submitter":{"deviceId":"1","sessionId":"1"},"variables":[{"scope":"SESSION","value":"iPhone OS","name":"osName"},{"scope":"SESSION","value":"x86_64","name":"hardwareType"},{"scope":"SESSION","value":"6.0","name":"osVersion"},{"scope":"EVENT","value":"51115abd1e0422c533000002","name":"variant"}],"label":null,"category":null,"location":"ADSettingsViewController","timestamp":"2012-11-16T19:23:57Z","action":null,"type":"PAGEVIEW","versionNumber":"1.0","value":0,"submitted":0,"appId":"50fdc396b9efd172b8000065","controlEvent":null},{"control":null,"submitter":{"deviceId":"1","sessionId":"1"},"variables":[{"scope":"SESSION","value":"iPhone OS","name":"osName"},{"scope":"SESSION","value":"x86_64","name":"hardwareType"},{"scope":"SESSION","value":"6.0","name":"osVersion"},{"scope":"EVENT","value":"51115abd1e0422c533000002","name":"variant"}],"label":null,"category":null,"location":"ADProductViewController","timestamp":"2012-11-16T19:23:59Z","action":null,"type":"PAGEVIEW","versionNumber":"1.0","value":0,"submitted":0,"appId":"50fdc396b9efd172b8000065","controlEvent":null} 

出てくるもの:

 {"control":null,"submitter":{"deviceId":"1","sessionId":"1"},"variables":[{"scope":"SESSION","value":"iPhone OS","name":"osName"},{"scope":"SESSION","value":"x86_64","name":"hardwareType"},{"scope":"SESSION","value":"6.0","name":"osVersion"},{"scope":"EVENT","value":"51115abd1e0422c533000002","name":"variant"}],"label":null,"category":null,"location":"ADSettingsViewController","timestamp":"2013-02-25T16:22:57Z","action":null,"type":"PAGEVIEW","versionNumber":"1.0","value":0,"submitted":0,"appId":"50fdc396b9efd172b8000065","controlEvent":null}{"control":null,"submitter":{"deviceId":"1","sessionId":"1"},"variables":[{"scope":"SESSION","value":"iPhone OS","name":"osName"},{"scope":"SESSION","value":"x86_64","name":"hardwareType"},{"scope":"SESSION","value":"6.0","name":"osVersion"},{"scope":"EVENT","value":"51115abd1e0422c533000002","name":"variant"}],"label":null,"category":null,"location":"ADProductViewController","timestamp":"2013-02-25T16:22:57Z","action":null,"type":"PAGEVIEW","versionNumber":"1.0","value":0,"submitted":0,"appId":"50fdc396b9efd172b8000065","controlEvent":null}{"control":"UIRoundedRectButton","submitter":{"deviceId":"1","sessionId":"1"},"variables":[{"scope":"SESSION","value":"iPhone OS","name":"osName"},{"scope":"SESSION","value":"x86_64","name":"hardwareType"},{"scope":"SESSION","value":"6.0","name":"osVersion"},{"scope":"EVENT","value":"51115abd1e0422c533000002","name":"variant"}],"label":"Checkout Now","category":"ADProductViewController","location":null,"timestamp":"2013-02-25T16:22:57Z","action":"checkoutNowTapped:","type":"EVENT","versionNumber":"1.0","value":0,"submitted":0,"appId":"50fdc396b9efd172b8000065","controlEvent":"UIControlEventTouchUpInside"}
4

1 に答える 1

2

0, 2, 5, 6データを見ずに見分けるのは難しいですが、考えられる原因は、(ではなく)シーケンシャルではないインデックスです0, 1, 2, 3

データに何が含まれているかわからない場合はforeach、配列をループするために使用することをお勧めします。

foreach ($json_data as $key => $value) 
{
  ...
}
于 2013-02-25T21:57:47.127 に答える