2015-09-03 17 views
1

的哈希我有以下陣列合併內陣列父陣列使用CakePHP

$array['projects'] = [ 
    'name1' => [ 
     'task' => [ 
      'tags' => ['value1', 'value2'], 
      'email' => 'email2', 
      'description' => 'mpla' 
     ], 
     'email' => 'email1', 
     'tags' => ['value1', 'value3'], 
     'title' => 'mpla' 
    ] 
]; 

有反正我可以用Hash類CakePHP的3或也許另一個類CakePHP的框架,以實現以下結果:

$array['projects'] = [ 
    'name1' => [ 
     'email' => 'email2', 
     'tags' => ['value1', 'value2'], 
     'title' => 'mpla' 
     'desciption' => 'mpla' 
    ] 
]; 

如果你也知道任何其他軟件包,它可以處理數組並完成我的工作,它會做的。

回答

2

不確定使用Cake的Hash實用程序可以輕鬆實現。您可以使用combine()容易提取由task索引的數組項,但不知道你怎麼會那麼去提取title值,並使用散列合併那些與其他數組元素: -

Hash::combine($array, 'projects.{s}', 'projects.{s}.task'); 

也許最簡單的解決方法是使用foreach循環是這樣的: -

$data = []; 
foreach ($array['projects'] as $value) { 
    $data['projects'] = $value['task'] + ['title' => $value['title']]; 
} 
+0

基本上我的陣列是不是我寫的和foreach不是很理想的選擇的例子更深刻。 – gmponos

+1

我認爲你所要求的超出了Hash工具的範圍。哈希實際上使用'for'循環來構建改變的數組,所以我懷疑'foreach'循環是你最好的選擇。如果你的實際問題比你發佈的更復雜,你可以採用循環和哈希方法的組合方法。 – drmonkeyninja