2017-03-03 74 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 
    ]; 
}