? `

2017-12-30 27 views
0

まず第一に、ここであなたは私が配列(「データ」=> $データ)を使用しています見ることができるように、私は? `

$json = file_get_contents('./releases.json'); 
$data = json_decode($json, TRUE); 
$region = isset($_GET['region']) ? $_GET['region'] : null; 

# if region is not null: ?region=8 
if ($region) { 
    $region_filter = function($v) use ($region) { 
     // 8 == Worldwide 
     if ($v['region'] == $region || $v['region'] == 8) { 
      return true; 
     } else { 
      return false; 
     } 
    }; 
    $data = array_filter($data['data'], $region_filter); 
} 

header('Content-Type: application/json'); 
echo json_encode(array('data' => $data)); 

を使用しているコードです私のJSONオブジェクト($ data)を 'data'という名前の配列に格納しますが、これはすべて、配列ではなく他のすべてのオブジェクトを持つ親オブジェクトデータを作成することです。どうもありがとうございました!

releases.json例:$_GET['region']が設定されていない場合

{ 
"last_update_on": "2017-12-30", 
"data": [{..}, {..}] 
} 
+1

質問が分かりません。期待する出力は何ですか? releases.jsonの構造は何ですか? –

+0

申し訳ありませんが、私は自分の質問を編集しました –

+0

'echo json_encode($ data);'としてください。 –

答えて

0

、その後、あなたはifブロック内のコードをスキップし、そうまだそれで$data['data']を持っており、その後、あなたはarray('data'=>$data)で別のレベルを追加します。

しかし、$_GET['region']が設定されている場合、ifブロック内のコードは、'data'のコードが$data = array_filter($data['data'], $region_filter);のものを削除します。

つまり、ブロックコードが実行されているかどうかによって、$dataは構造的に異なります。試してみてください

$json = file_get_contents('./releases.json'); 
$data = json_decode($json, TRUE); 
$data = $data['data']; 
$region = isset($_GET['region']) ? $_GET['region'] : null; 

# if region is not null: ?region=8 
if ($region) { 
    $region_filter = function($v) use ($region) { 
     // 8 == Worldwide 
     if ($v['region'] == $region || $v['region'] == 8) { 
      return true; 
     } else { 
      return false; 
     } 
    }; 
    $data = array_filter($data, $region_filter); 
} 

header('Content-Type: application/json'); 
echo json_encode(array('data' => $data));