2017-06-08 12 views
0

データを取得するのに苦労しているJSONファイルがあります。ここにJSONがあります。PHP - JSONからデータを引き出す

{"data":[ 
     {"tag":"operatingrevenue","value":215639000000.0}, 
     {"tag":"totalrevenue","value":215639000000.0}, 
     {"tag":"operatingcostofrevenue","value":131376000000.0}, 
     {"tag":"totalcostofrevenue","value":131376000000.0}, 
     {"tag":"totalgrossprofit","value":84263000000.0}, 
     {"tag":"sgaexpense","value":14194000000.0}, 
     {"tag":"rdexpense","value":10045000000.0}, 
     {"tag":"totaloperatingexpenses","value":24239000000.0}, 
     {"tag":"totaloperatingincome","value":60024000000.0}, 
     {"tag":"otherincome","value":1348000000.0}, 
     {"tag":"totalotherincome","value":1348000000.0}, 
     {"tag":"totalpretaxincome","value":61372000000.0}, 
     {"tag":"incometaxexpense","value":15685000000.0}, 
     {"tag":"netincomecontinuing","value":45687000000.0}, 
     {"tag":"netincome","value":45687000000.0}, 
     {"tag":"netincometocommon","value":45687000000.0}, 
     {"tag":"weightedavebasicsharesos","value":5470820000.0}, 
     {"tag":"basiceps","value":8.35}, 
     {"tag":"weightedavedilutedsharesos","value":5500281000.0}, 
     {"tag":"dilutedeps","value":8.31}, 
     {"tag":"weightedavebasicdilutedsharesos","value":5471500000.0}, 
     {"tag":"basicdilutedeps","value":8.35}, 
     {"tag":"cashdividendspershare","value":2.18}] 

私はそれまでにデータを引き出すことができる

$data = json_decode($jsondata, true); 

を使用して配列に変換しています:

$operatingRevenue = $data['data'][0]['value']; 
$totalrevenue = $data['data'][1]['value']; 

など、しかし、私はタグ名を使用したいと注文がJSONで変更された場合の注文だけではありません。

$operatingRevenue = $data['data']['operatingRevenue']; 
+0

これは面倒なことに構築されたJSONです。代わりに送信されるデータの構造を変更する機能はありますか? – Bytewave

答えて

1

反復$data配列、およびtag要素に配列の新しい要素のキーを設定し、それがvalue要素に値だような何か。 $array['operatingRevenue']

0

反復の$データとarray_pushを使用します。

foreach($data['data'] as $v) 
    $array[$v['tag']] = $v['value']; 

$arrayあなたは、このようなアクセスを望むものが含まれています。 こちらをご覧ください。 https://www.w3schools.com/php/func_array_push.asp

$data = json_decode($jsondata, true); 
$datas = []; 
foreach($data['data'] as $val){ 
    array_push($datas,["tag"=>$val['tag'],"value"=>$val['tag']]) 
} 
関連する問題