2016-06-01 123 views
-3

我有2个阵列如下所示,如果我想array[0]array[1]ht_cat_name是相同的。所以ht_category是2阵列常见的。所以ht_category基于合并ht_amenity_name。如何合并阵列

Array 
(
    [0] => Array 
     (
      [ht_amenity_id] => 1 
      [ht_amenity_name] => Central Air Conditioning 
      [ht_category] => 1 
      [ht_cat_name] => General 
     ) 

    [1] => Array 
     (
      [ht_amenity_id] => 2 
      [ht_amenity_name] => Facilities for disabled guests 
      [ht_category] => 1 
      [ht_cat_name] => General 
     ) 

    [2] => Array 
     (
      [ht_amenity_id] => 3 
      [ht_amenity_name] => Climate control 
      [ht_category] => 2 
      [ht_cat_name] => Services 
     ) 
) 

我想合并这样的设施名称。

Array 
(
    [0] => Array 
     (
      [ht_amenity_id][0] => 1 
      [ht_amenity_id][1] => 2 
      [ht_amenity_name][0] => Central Air Conditioning 
      [ht_amenity_name][1] => Facilities for disabled guests 
      [ht_category] => 1 
      [ht_cat_name] => General 
     ) 
    [1] => Array 
     (
      [ht_amenity_id] => 3 
      [ht_amenity_name] => Climate control 
      [ht_category] => 2 
      [ht_cat_name] => Services 
     ) 

) 
+2

哪里是代码,你试过吗?请添加您为此尝试的代码.... – Vickrant

+0

$ amen = DB :: select(“SELECT'h'.'ht_amenity_id','h'.'ht_amenity_name','h'.'ht_category','a '.'ht_cat_name' FROM'abserve_hotel_amenities' as'h'将abserve_hotel_categories加入'a' ON'a'.'ht_cat_id' ='h'.'ht_category'“); \t \t \t $ am = array(); \t \t \t的foreach($阿门为$密钥=> $值){ \t \t \t $是[] =(get_object_vars($值)); \t \t \t} \t \t \t $用户=阵列(); \t \t \t的foreach($的空房为$密钥=> $值){ \t \t \t $用户[] =(get_object_vars($值)); \t \t \t} – murugesh

+0

sry,$ amen = DB :: select(“SELECT'h'.ht_amenity_id','h'.ht_amenity_name','h'.ht_category','a'.'ht_cat_name' FROM 'abserve_hotel_amenities' as'h'将abserve_hotel_categories加入'a' ON'a'.'ht_cat_id' ='h'。'ht_category'“); \t \t \t $ AM =阵列(); \t \t \t的foreach($阿门为$密钥=> $值){ \t \t \t $是[] =(get_object_vars($值) ); \t \t \t} \t \t \t $用户=阵列(); \t \t \t的foreach($的空房为$密钥=> $值){ \t \t \t $ user [] =(get_object_vars($ value)); \t \t \t} – murugesh

回答

0

如果你不能改变你怎么弄的数据(即它来自一个API,或者您不能修改SQL查询)你最好的选择将是一个集流水线库(纯PHP解决办法是两个嵌套foreaches我不喜欢太多

这应该为你工作(使用Knapsack写的):

$data = [ 
    [ 
     "ht_amenity_id" => 1, 
     "ht_amenity_name" => "Central Air Conditioning", 
     "ht_category" => 1, 
     "ht_cat_name" => "General", 
    ], 

    [ 
     "ht_amenity_id" => 2, 
     "ht_amenity_name" => "Facilities for disabled guests", 
     "ht_category" => 1, 
     "ht_cat_name" => "General", 
    ], 

    [ 
     "ht_amenity_id" => 3, 
     "ht_amenity_name" => "Climate control", 
     "ht_category" => 2, 
     "ht_cat_name" => "Services", 
    ] 
]; 

$transformed = Collection::from($data) 
    ->groupByKey('ht_category') 
    ->map(function (Collection $category, $categoryId) { 
     return [ 
      "ht_amenity_id" => $category->extract('ht_amenity_id')->toArray(), 
      "ht_amenity_name" => $category->extract('ht_amenity_name')->toArray(), 
      "ht_category" => $categoryId, 
      "ht_cat_name" => $category->extract('ht_cat_name')->first(), 
     ]; 
    }) 
    ->toArray(); 

收集管道库: