2016-12-21 10 views
0

から独立したPHPの配列を作成します。私は、このJSONソースファイル持つ1つのJSONファイル

{ 
    "results": 
    [ 
     { 
     "movie_title":"A Monster Calls", 
     "cinema":"downtown" 
     }, 
     { 
     "movie_title":"A Monster Calls", 
     "cinema":"uptown" 
     }, 
     { 
     "movie_title":"A Monster Calls", 
     "cinema":"downtown" 
     }, 
     { 
     "movie_title":"A Monster Calls", 
     "cinema":"downtown" 
     } 
    ] 
} 

と私は(明確にするために簡略化)このように私の配列を書いています:

$json_data = json_decode($html, true); 
for($i = 0; $i < count($json_data['results']); $i++) { 

    $movieTitle = $json_data['results'][$i]["movie_title"]; 
    $cinema = $json_data['results'][$i]["cinema"]; 

    $moviesList[]= array(
     "movieTitle" => $movieTitle, 
     "cinema" => $cinema 
    ); 
} 

しかし、私がしたいの2つの別々の配列が出力されます。一つは "ダウンタウン"の映画に出演するすべての映画であり、もう一つは "アップタウン"に出演するすべての映画である。 jsonファイルの順序が変わるので、私は名前でそれを行う必要があります。

これを行うにはどうすればよいですか?

+2

こんにちは。最初にJSONを修正してください。いくつか余分なカンマがあります。 – deChristo

答えて

1
$downtownArray = array(); 
$uptownArray = array(); 

$json_data = json_decode($html, true); 
for($i = 0; $i < count($json_data['results']); $i++) { 

    $movieTitle = $json_data['results'][$i]["movie_title"]; 
    $cinema = $json_data['results'][$i]["cinema"]; 

    if ($cinema == 'uptown') { 
     $uptownArray[]= array(
      "movieTitle" => $movieTitle, 
      "cinema" => $cinema 
     ); 
    } else { 
     $downtownArray[]= array(
      "movieTitle" => $movieTitle, 
      "cinema" => $cinema 
     ); 
    } 
} 
1
foreach ($json_data['results'] as $result) { 
    $cinema = $result['cinema']; 
    $moviesList[$cinema] []= [ 
    "movieTitle" => $result['movie_title'], 
    // ... 
    ]; 
} 

コードはcinemaフィールドによって結果を分類し$moviesListアレイにそれらを格納します。たとえば、uptownの結果は$moviesList['uptown']に格納されます。

0

あなたはすべてのこの

$json_data = json_decode($html, true); 
$moviesDwn=array(); 
$moviesUp=array(); 
    for($i = 0; $i < count($json_data['results']); $i++) { 

     $movieTitle = $json_data['results'][$i]["movie_title"]; 
     $cinema = $json_data['results'][$i]["cinema"]; 
     if ($json_data['results'][$i]["cinema"]='uptown') 
     $moviesUp[]= array(
      "movieTitle" => $movieTitle, 
      "cinema" => $cinema 
     ); 
    else if ($json_data['results'][$i]["cinema"]='updown') 
     $moviesDwn[]= array(
      "movieTitle" => $movieTitle, 
      "cinema" => $cinema 
     ); 
    } 
0

ファーストのようなものを試してみてください、FIXあなたJSON、それはいくつかの余分なコンマがあり、その後、以下のコード

の場合にしてみてくださいとあなたは2つの配列を使用するよりもちょうど分離したいと思っていますforeach(){};

 foreach ($json_data['results'] as $result) { 
     $DownTown_List[$result['cinema']] []= $result['movie_title']; 
    } 

OR

あなたはインデックスと他の操作をしたいならば、(){}のためを使用します。

for($i = 0; $i < count($json_data['results']); $i++) { 

     if($json_data['results'][$i]["cinema"] === "downtown"){ 
      $DownTown_List["downtown"][] = $json_data['results'][$i]["movie_title"]; 
     } 
     if($json_data['results'][$i]["cinema"] === "uptown"){ 
      $DownTown_List["uptown"][] = $json_data['results'][$i]["movie_title"]; 
     } 
    } 
    echo "<pre>";print_r($DownTown_List);exit; 

OUTPUT

Array 
(
    [downtown] => Array 
     (
      [0] => A Monster Calls 
      [1] => A Monster Calls 
      [2] => A Monster Calls 
     ) 

    [uptown] => Array 
     (
      [0] => A Monster Calls 
     ) 

) 
関連する問題