2017-03-03 99 views
-3
在我的關係數據庫

FOREACH,如何在內部陣列

如果id_sub_bidang = 1,則nama_sub_bidang 「前端deveoper」。

如果id_sub_bidang = 2那麼nama_sub_bidang 「資深營銷」

我的代碼

$data = Company::find($id); 

      $result_data = array(); 

      foreach ($data->posting_job as $hasil) { 

       foreach ($data->sub_bidang as $value) { 

        $result_data[] = [ 

         'id_sub_bidang' => $hasil->id_sub_bidang, 
         'nama_sub_bidang' => $value->nama 
        ]; 
       } 

      } 

      return response()->json($result_data); 

輸出

[ 
     { 
     "id_sub_bidang": 1, 
     "nama_sub_bidang": "Frontend Developer" 
     }, 
     { 
     "id_sub_bidang": 1, 
     "nama_sub_bidang": "Senior Marketing" 
     }, 
     { 
     "id_sub_bidang": 2, 
     "nama_sub_bidang": "Frontend Developer" 
     }, 
     { 
     "id_sub_bidang": 2, 
     "nama_sub_bidang": "Senior Marketing" 
     } 
] 

預期的結果

[ 
     { 
     "id_sub_bidang": 1, 
     "nama_sub_bidang": "Frontend Developer" 
     }, 
     { 
     "id_sub_bidang": 2, 
     "nama_sub_bidang": "Senior Marketing" 
     } 
] 

我想循環內部數組,但沒有工作。所以,我用這種方式。 有什麼問題?

+0

分享您'$ data'? – C2486

+0

你的預期結果是什麼? – martiendt

+0

@martiendt對不起,已添加:) – bamsarts

回答

0

更改您的foreach循環到這一點:

foreach ($data->posting_job as $hasil) { 

     foreach ($hasil->id_sub_bidang as $hasilid) { 

       $result_data[] = ['id_sub_bidang' => $hasil->id_sub_bidang]; 

       foreach ($data->sub_bidang as $value) { 
        $result_data[] = ['nama_sub_bidang' => $value->nama]; 
       } 
     } 
} 
+0

爲foreach提供的參數無效() 此代碼** foreach($ hasil-> id_sub_bidang as $ hasilid)** – bamsarts

0

建立一個數組,然後使用遞歸的方法來清潔通過重複條目的陣列。

array_replace_recursive


另一種解決方案

$empty_stats = Array(
    'id_sub_bidang' => null, 
    'nama_sub_bidang' => null 
); 

foreach ($array as $value) { 
    if (!array_key_exists($id_sub_bidang, $array)) { 
     $array[] = $empty_stats; 
    } 
    $array[] = [ 

     'id_sub_bidang' => $hasil->id_sub_bidang, 
     'nama_sub_bidang' => $value->nama 
    ]; 
}