2012-07-06 30 views
0

我有一個多維數組,我嘗試合併鍵。我想合併相同的密鑰出現在我試圖合併的密鑰上的單獨密鑰上。將多個相同鍵上的兩個鍵合併到一個多維數組中

我目前的數組看起來像這樣。

Array 
(
[0] => Array 
    (
     [zone_id] => 2 
     [zone_title] => Users 
     [link_title] => Users 
    ) 

[1] => Array 
    (
     [zone_id] => 2 
     [zone_title] => Users 
     [link_title] => Add User 
    ) 

[2] => Array 
    (
     [zone_id] => 3 
     [zone_title] => Locations 
     [link_title] => 
    ) 
) 

我想離開數組原樣,除了合併具有相同zone_id鍵的數組之外。

結果

Array 
(
[0] => Array 
    (
     [zone_id] => 2 
     [zone_title] => Users 
     [link_title] => Array 
          (
           [0] => Users 
           [1] => Add user 
          ) 
    ) 

[1] => Array 
    (
     [zone_id] => 3 
     [zone_title] => Locations 
     [link_title] => 
    ) 
) 

回答

0
<?php 
function merge_keys($arr){ 
    for ($key = 0; $key < count($arr); $key++) { 
     $zone_id = $arr[$key]['zone_id']; 
     $index = search($arr, $zone_id); 
     if ($index != $key && $index != -1){ 
      $link_title = $arr[$key]['link_title']; 
      $link_title2 = $arr[$index]['link_title']; 
      $arr[$key]['zone_id'] = $zone_id; 
      $arr[$key]['zone_title'] = $arr[$key]['zone_title']; 
      $arr[$key]['link_title'] = array($link_title, $link_title2); 
      unset($arr[$index]); 
     } 
    } 
    return $arr; 
} 

function search($arr, $zone_id){ 
    for ($i = count($arr) - 1; $i >= 0 ; $i--) { 
     $item = $arr[$i]; 
     $tmp_zone_id = $item['zone_id']; 
     if($tmp_zone_id == $zone_id){ 
      return $i; 
     } 
    } 
    return -1; 
} 

$arr = array(array('zone_id' => 2, 'zone_title' => 'Users', 'link_title' => 'Users'), 
      array('zone_id' => 2, 'zone_title' => 'Users', 'link_title' => 'Add User'), 
      array('zone_id' => 3, 'zone_title' => 'Locations', 'link_title' => '')); 

echo "Before change: \n"; 
print_r($arr); 
$arr = merge_keys($arr); 
echo "After change: \n\n"; 
print_r($arr); 
?> 
+0

由於這個工程。這是相當多的拼接陣列。我可以回到繪圖板上,看看我是否不能像查詢時那樣構建陣列。再次感謝。 – MAZUMA 2012-07-06 21:04:29

相關問題