2014-11-24 62 views
0

我怎樣才能拼接如果ID(密鑰)的值是相同的其它ID(密鑰)的值的密鑰值多維陣列串連值

PHP

$locations = Array(
    [0] => Array(
     "id"   => 1, 
     "latitude" => "51.541561", 
     "longitude", => "84.215", 
     "content", => "The quick brown" 
    ) 
    [1] => Array(
     "id"   => 1, 
     "latitude" => "51.541561", 
     "longitude", => "84.215", 
     "content", => "fox jumps over the lazy dog" 
    ) 
    [2] => Array(
     "id"   => 3, 
     "latitude" => "12.541561", 
     "longitude", => "32.215", 
     "content", => "Another content" 
    ) 

我想讓它像這樣:

$locations = Array(
    [0] => Array(
     "id"   => 1, 
     "latitude" => "51.541561", 
     "longitude", => "84.215", 
     "content", => "The quick brown fox jumps over the lazy dog" 
    ) 
    [2] => Array(
     "id"   => 3, 
     "latitude" => "12.541561", 
     "longitude", => "32.215", 
     "content", => "Another content" 
    ) 

基本上我想連接內容(鍵)的值,如果id(key)與其他id(key)值相同。

任何幫助將不勝感激。

+0

編寫一個簡單的'爲/ foreach'循環 – 2014-11-24 08:04:41

回答

2

試試這個 -

$array = array(); 
foreach ($yourArray as $val) { 
    if (!array_key_exists($val['id'], $array)) { 
     $array[$val['id']] = $val; 
    } else { 
     $array[$val['id']]['content'] .= ' '.$val['content']; 
    } 
} 
+0

就像一個魅力!謝啦! – Vincent 2014-11-24 08:14:36

+0

歡迎您..... :) – 2014-11-24 08:21:12

0

希望這可以幫助你:)

/** 
* merge 2 arrays and return a new merged array. if same same key exists it will overwrite , unlike array_merge_recursive 
* @param $a 
* @param $b 
* @return array|mixed 
*/ 
public static function mergeArray($a,$b){ 
    $args=func_get_args(); 
    $res=array_shift($args); 
    while(!empty($args)) 
    { 
     $next=array_shift($args); 
     foreach($next as $k => $v) 
     { 
      if(is_integer($k)) 
       isset($res[$k]) ? $res[]=$v : $res[$k]=$v; 
      elseif(is_array($v) && isset($res[$k]) && is_array($res[$k])) 
       $res[$k]=self::mergeArray($res[$k],$v); 
      else 
       $res[$k]=. $v; 
     } 
    } 
    return $res; 
}