2015-02-11 43 views
0

所以我有一个具有相似元素的数组,我需要将它合并到一个多维数组中,将一些元素合并到一起,我可能会要求太多的生活,但认为我会问...在此先感谢:)将类似的元素合并到一个多维PHP数组中

我目前的数组:

Array 
(
    [0] => Array 
     (
      [name] => Facebook 
      [icon] => 
      [sectors] => BSS 
      [url] => http://www.facebook.com/... 
     ) 

    [1] => Array 
     (
      [name] => Facebook 
      [icon] => 
      [sectors] => BSP 
      [url] => http://www.facebook.com/... 
     ) 

    [2] => Array 
     (
      [name] => GooglePlus 
      [icon] => 
      [sectors] => BSP 
      [url] => https://plus.google.com/... 
     ) 

    [3] => Array 
     (
      [name] => LinkedIn 
      [icon] => 
      [sectors] => BSS 
      [url] => http://www.linkedin.com/... 
     ) 

    [4] => Array 
     (
      [name] => LinkedIn 
      [icon] => 
      [sectors] => BSP 
      [url] => http://www.linkedin.com/... 
     ) 

    [5] => Array 
     (
      [name] => Twitter 
      [icon] => 
      [sectors] => BSS 
      [url] => http://twitter.com/... 
     ) 

    [6] => Array 
     (
      [name] => Twitter 
      [icon] => 
      [sectors] => BSP 
      [url] => http://twitter.com/... 
     ) 

    [7] => Array 
     (
      [name] => Vimeo 
      [icon] => 
      [sectors] => BSS 
      [url] => http://vimeo.com/... 
     ) 

    [8] => Array 
     (
      [name] => Vimeo 
      [icon] => 
      [sectors] => BSP 
      [url] => https://vimeo.com/... 
     ) 

    [9] => Array 
     (
      [name] => Youtube 
      [icon] => 
      [sectors] => BSS 
      [url] => http://www.youtube.com/... 
     ) 

    [10] => Array 
     (
      [name] => Blog 
      [icon] => 
      [sectors] => Local 
      [url] => /blog 
     ) 

) 

我需要到结束:

Array 
(
    [0] => Array 
     (
      [name] => Facebook 
      [icon] => 
      [sectors] => Array 
       (
        [0] => Array 
         (
          [name] => BSS 
          [url] => http://www.facebook.com/... 
         ) 
        [1] => Array 
         (
          [name] => BSP 
          [url] => http://www.facebook.com/... 
         ) 

       ) 

     ) 

    [1] => Array 
     (
      [name] => GooglePlus 
      [icon] => 
      [sectors] => Array 
       (
        [0] => Array 
         (
          [name] => BSP 
          [url] => https://plus.google.com/... 
         ) 

       ) 

     ) 

    [2] => Array 
     (
      [name] => LinkedIn 
      [icon] => 
      [sectors] => Array 
       (
        [0] => Array 
         (
          [name] => BSS 
          [url] => http://www.linkedin.com/.... 
         ) 
        [1] => Array 
         (
          [name] => BSP 
          [url] => http://www.linkedin.com/... 
         ) 

       ) 

     ) 

    [3] => Array 
     (
      [name] => Twitter 
      [icon] => 
      [sectors] => Array 
       (
        [0] => Array 
         (
          [name] => BSS 
          [url] => http://twitter.com/... 
         ) 
        [1] => Array 
         (
          [name] => BSP 
          [url] => http://twitter.com/... 
         ) 

       ) 

     ) 

    [4] => Array 
     (
      [name] => Vimeo 
      [icon] => 
      [sectors] => Array 
       (
        [0] => Array 
         (
          [name] => BSS 
          [url] => http://vimeo.com/... 
         ) 
        [1] => Array 
         (
          [name] => BSP 
          [url] => https://vimeo.com/... 
         ) 

       ) 

     ) 

    [5] => Array 
     (
      [name] => Youtube 
      [icon] => 
      [sectors] => Array 
       (
        [0] => Array 
         (
          [name] => BSS 
          [url] => http://www.youtube.com/.... 
         ) 

       ) 

     ) 

    [6] => Array 
     (
      [name] => Blog 
      [icon] => 
      [sectors] => Array 
       (
        [0] => Array 
         (
          [name] => Local 
          [url] => /blog 
         ) 

       ) 

     ) 

) 
+1

你试了一下......?如果是的话,你可以告诉我们你的代码...? – Vagabond 2015-02-11 18:13:05

+0

嗨,是的,我一直在尝试所有下午,我已经尝试了很多选项,我不知道从哪里开始......我试图将它们分成单独的数组,然后尝试合并回来,我试过使用比较下一步和现在的递归数组合并,但我真的是一个设计师,他在代码中涉猎到他需要的地方,我有点出于我的深度,对不起。 – OnsiteDesigner 2015-02-11 18:21:28

回答

1

这里是我会做:

foreach ($original_array as $value){ 
    $result_array[$value['name']]['name'] = $value['name']; 
    $result_array[$value['name']]['icon'] = $value['icon']; 
    $result_array[$value['name']]['sectors'][] = array(
                 'name' => $value['sectors'], 
                 'url' => $value['url'] 
} 

我正在做的是使用名称(Facebook,Youtube等)作为数组键,能够推动(使用[])子数组的扇区和url元素到他们的自己的子阵列。

从这里你可以返回$ result_array原样,或者如果你真的需要一个索引数组,返回array_values($ result_array)

我做的是图标不会贴有两个条目之间改变的假设一样的名字。如果不是这种情况,您可以创建名称+图标的哈希,或者只是连接名称和图标并将其用作数组键。

+0

谢谢!这是完美的,有一个美好的一天! – OnsiteDesigner 2015-02-11 19:20:08