2016-03-21 40 views
0

我已经做了研究,并没有从这方面得到任何解决方案。所以最终的想法来到Stackoverflow并提出问题。2个数组之间的PHP匹配值不同键

我有2个阵列象下面这样:

BigArray

Array 
(
    [0] => Array 
     (
      [id] => 1 
      [category_name] => Accountancy 
      [category_name_vi] => Kế toán 
      [category_id] => 1 
     ) 

    [1] => Array 
     (
      [id] => 2 
      [category_name] => Armed forces 
      [category_name_vi] => Quân đội 
      [category_id] => 2 
     ) 

    [2] => Array 
     (
      [id] => 3 
      [category_name] => Admin & Secretarial 
      [category_name_vi] => Thư ký & Hành chính 
      [category_id] => 3 
     ) 

    [3] => Array 
     (
      [id] => 4 
      [category_name] => Banking & Finance 
      [category_name_vi] => Tài chính & Ngân hàng 
      [category_id] => 4 
     ) 
) 

和SmallArray:

Array 
(
    [0] => Array 
     (
      [id] => 7 
      [category_id] => 2 
      [jobseeker_id] => 1 
     ) 

    [1] => Array 
     (
      [id] => 8 
      [category_id] => 3 
      [jobseeker_id] => 1 
     ) 
) 

好,现在我想从SmallArray链路相互匹配category_id分别category_nameBigArray而输出I只需要SmallArray和之间的匹配值其中SmallArraycategory_id是关键和BigArraycategory_name是像下面的值:

匹配的数组:

Array 
    (
     [0] => Array 
      (
       [2] => Armed forces      
      ) 

     [1] => Array 
      (
       [3] => Admin & Secretarial 
      ) 
    ) 

到目前为止,我已经尝试array_intersect,2个foreach循环,但没有运气。任何建议将是非常赞赏:(

感谢

回答

1

这应该这样做:

foreach ($smallArray as $smallKey => $smallElement) { 
    foreach ($bigArray as $bigKey => $bigElement) { 
     if ($bigElement['id'] == $smallElement['category_id']) { 
      $smallArray[$smallKey] = array(
       $bigElement['id'] => $bigElement['category_name'], 
      ); 
      break; // for performance and no extra looping 
     } 
    } 
} 

这些循环后,你有你的$smallArray想要什么

+0

完美,非常感谢你。这保存了我的生活!! – SonDang

+0

btw,这两个数组直接从数据库中的2个表(BigArray和SmallArray表)中获得。你认为我应该在smallArray表名“category_name”中添加额外的列并插入类别名称以加快性能取而代之foreach循环像上面那样? :) – SonDang

+1

不,不是一个好主意:)。它们是完全独立的概念。还有其他方法可以提高性能。如果您正在从数据库中读取数据,那么查询时最好的方法是连接表(在product.category_id = category.id中)。 –

相关问题