2016-02-26 47 views
-1

我有這個PHP數組是CONVER,以JSON數組:重組PHP數組到多個JSON數組

array(
     'results' => array(
      (int) 0 => array(
       'unit_id' => '1', 
       'unit_number' => '36-1', 
       'unit_block' => 'PH1A', 
       'unit_type' => 'River/Sea Facing', 
       'unit_square_feet' => '1238', 
       'unit_direction' => 'NW', 
       'unit_level' => '36', 
       'unit_price' => '793000', 
       'book_status' => null 
      ), 
      (int) 1 => array(
       'unit_id' => '2', 
       'unit_number' => '36-2', 
       'unit_block' => 'PH3A', 
       'unit_type' => 'River/Sea Facing', 
       'unit_square_feet' => '1518', 
       'unit_direction' => 'NW', 
       'unit_level' => '36', 
       'unit_price' => '996000', 
       'book_status' => 'booked' 
      ), 
      (int) 2 => array(
       'unit_id' => '3', 
       'unit_number' => '36-5', 
       'unit_block' => 'PH1B', 
       'unit_type' => 'City Facing', 
       'unit_square_feet' => '1238', 
       'unit_direction' => 'SE', 
       'unit_level' => '36', 
       'unit_price' => '793000', 
       'book_status' => null 
      ), 
      (int) 3 => array(
       'unit_id' => '4', 
       'unit_number' => '36-6', 
       'unit_block' => 'P3B', 
       'unit_type' => 'City Facing', 
       'unit_square_feet' => '1518', 
       'unit_direction' => 'SE', 
       'unit_level' => '36', 
       'unit_price' => '996000', 
       'book_status' => null 
      ), 
     ), 
    ); 

是否有可能,如果我想返回JSON數組像下面這種結構?

{ 
    "results": 
     [ 
      { 
       "unit_id": "1", 
       "unit_number": "36-1", 
       "unit_block": "PH1A", 
       "unit_type": "River \/ Sea Facing", 
       "unit_square_feet": "1238", 
       "unit_direction": "NW", 
       "unit_level": "36", 
       "unit_price": "793000", 
       "book_status": null 
      } 
     ], 
     [ 
      { 
       "unit_id": "2", 
       "unit_number": "36-2", 
       "unit_block": "PH3A", 
       "unit_type": "River \/ Sea Facing", 
       "unit_square_feet": "1518", 
       "unit_direction": "NW", 
       "unit_level": "36", 
       "unit_price": "996000", 
       "book_status": "booked" 
      } 
     ], 
     [ 
      { 
       "unit_id": "3", 
       "unit_number": "36-5", 
       "unit_block": "PH1B", 
       "unit_type": "City Facing", 
       "unit_square_feet": "1238", 
       "unit_direction": "SE", 
       "unit_level": "36", 
       "unit_price": "793000", 
       "book_status": null 
      } 
     ], 
     [ 
      { 
       "unit_id": "4", 
       "unit_number": "36-6", 
       "unit_block": "P3B", 
       "unit_type": "City Facing", 
       "unit_square_feet": "1518", 
       "unit_direction": "SE", 
       "unit_level": "36", 
       "unit_price": "996000", 
       "book_status": null 
      } 
     ], 
} 

當前返回的json數組結構。注意到「結果」之後還有一個數組。

{ 
    "results": [ 
     [ 
      { 
       "unit_id": "1", 
       "unit_number": "36-1", 
       "unit_block": "PH1A", 
       "unit_type": "River \/ Sea Facing", 
       "unit_square_feet": "1238", 
       "unit_direction": "NW", 
       "unit_level": "36", 
       "unit_price": "793000", 
       "book_status": null 
      } 
     ], 
     [ 
      { 
       "unit_id": "2", 
       "unit_number": "36-2", 
       "unit_block": "PH3A", 
       "unit_type": "River \/ Sea Facing", 
       "unit_square_feet": "1518", 
       "unit_direction": "NW", 
       "unit_level": "36", 
       "unit_price": "996000", 
       "book_status": "booked" 
      } 
     ], 
     [ 
      { 
       "unit_id": "3", 
       "unit_number": "36-5", 
       "unit_block": "PH1B", 
       "unit_type": "City Facing", 
       "unit_square_feet": "1238", 
       "unit_direction": "SE", 
       "unit_level": "36", 
       "unit_price": "793000", 
       "book_status": null 
      } 
     ], 
     [ 
      { 
       "unit_id": "4", 
       "unit_number": "36-6", 
       "unit_block": "P3B", 
       "unit_type": "City Facing", 
       "unit_square_feet": "1518", 
       "unit_direction": "SE", 
       "unit_level": "36", 
       "unit_price": "996000", 
       "book_status": null 
      } 
     ], 
    ] 
} 

我的PHP代碼至今:

$results = array(); 
    foreach ($units as $key => $unit) { 

    $unit = 
      array(
      'unit_id'=>$unit['Unit']['id'], 
      'unit_number'=>$unit['Unit']['unit_number'], 
      'unit_block' => $unit['Unit']['block'], 
      'unit_type' => $unit['UnitType']['name'], 
      'unit_square_feet' => $unit['Unit']['square_feet'], 
      'unit_direction' =>$unit['Unit']['direction'], 
      'unit_level' =>$unit['Unit']['level'], 
      'unit_price' =>$unit['Unit']['price'], 
      'book_status'=>$unit['Unit']['status'] 
     ); 
     $results['results'][$key] = array($unit); 
         } 

     return json_encode($results,JSON_PRETTY_PRINT); 

編輯:

要anwser @roullie評論,這裏是結果當我改變$results['results'][$key] = array($unit);$results['results'][$key] = $unit;

{ 
    "results": [ 
     { 
      "unit_id": "1", 
      "unit_number": "36-1", 
      "unit_block": "PH1A", 
      "unit_type": "River \/ Sea Facing", 
      "unit_square_feet": "1238", 
      "unit_direction": "NW", 
      "unit_level": "36", 
      "unit_price": "793000", 
      "book_status": null 
     }, 
     { 
      "unit_id": "2", 
      "unit_number": "36-2", 
      "unit_block": "PH3A", 
      "unit_type": "River \/ Sea Facing", 
      "unit_square_feet": "1518", 
      "unit_direction": "NW", 
      "unit_level": "36", 
      "unit_price": "996000", 
      "book_status": "booked" 
     }, 
    ] 
} 
+2

當改變'$結果[ '結果'] [$鍵] =陣列($單元)發生了什麼;'到'$結果[ '結果'] [$鍵] = $單元;' – roullie

+0

@roullie我編輯了我的問題 –

+1

你想要的結構是無效的JSON。所以不行。 – fisk

回答

0

嘗試下面的邏輯:

$units = array(
     'results' => array(
      (int) 0 => array(
       'unit_id' => '1', 
       'unit_number' => '36-1', 
       'unit_block' => 'PH1A', 
       'unit_type' => 'River/Sea Facing', 
       'unit_square_feet' => '1238', 
       'unit_direction' => 'NW', 
       'unit_level' => '36', 
       'unit_price' => '793000', 
       'book_status' => null 
      ), 
      (int) 1 => array(
       'unit_id' => '2', 
       'unit_number' => '36-2', 
       'unit_block' => 'PH3A', 
       'unit_type' => 'River/Sea Facing', 
       'unit_square_feet' => '1518', 
       'unit_direction' => 'NW', 
       'unit_level' => '36', 
       'unit_price' => '996000', 
       'book_status' => 'booked' 
      ), 
      (int) 2 => array(
       'unit_id' => '3', 
       'unit_number' => '36-5', 
       'unit_block' => 'PH1B', 
       'unit_type' => 'City Facing', 
       'unit_square_feet' => '1238', 
       'unit_direction' => 'SE', 
       'unit_level' => '36', 
       'unit_price' => '793000', 
       'book_status' => null 
      ), 
      (int) 3 => array(
       'unit_id' => '4', 
       'unit_number' => '36-6', 
       'unit_block' => 'P3B', 
       'unit_type' => 'City Facing', 
       'unit_square_feet' => '1518', 
       'unit_direction' => 'SE', 
       'unit_level' => '36', 
       'unit_price' => '996000', 
       'book_status' => null 
      ), 
     ), 
    ); 
    $results = array(); 

    foreach ($units['results'] as $key => $unit) { 


     $results['results'][] = array(
      'unit_id'=>$unit['unit_id'], 
      'unit_number'=>$unit['unit_number'], 
      'unit_block' => $unit['unit_block'], 
      'unit_type' => $unit['unit_type'], 
      'unit_square_feet' => $unit['unit_square_feet'], 
      'unit_direction' =>$unit['unit_direction'], 
      'unit_level' =>$unit['unit_level'], 
      'unit_price' =>$unit['unit_price'], 
      'book_status'=>$unit['book_status'] 
     ); 
         } 

     echo json_encode($results,JSON_PRETTY_PRINT); 
+0

hello,$ unit數據集來自數據庫,未預先配置。 –