2016-03-08 20 views
0

我想將多個數組合併成單個數組,並使值唯一。在PHP中使用不同值的數組操作

$array = array ( 
     $array1 = array(
     "id" => 205, 
     "firstName" => "NANCY GEORGE", 
     "gender" => "F", 
     "age" => 21, 
     "alert" => "bmi" 
    ), 
    $array2 = array(
     "id" => 205, 
     "firstName" => "NANCY GEORGE", 
     "gender" => "F", 
     "age" => 21, 
     "alert" => "bp" 
    ), 
    $array3 = array(
     "id" => 206, 
     "firstName" => "KUTAPPA.A.C", 
     "gender" => "M", 
     "age" => 31, 
     "alert" => "bmi" 
    ) 
    ); 

這裏是我的預期輸出,

$array = array ( 
     '205' = array(
     "id" => 205, 
     "firstName" => "NANCY GEORGE", 
     "gender" => "F", 
     "age" => 21, 
     "alert" => "bmi,bp" 
    ), 
    '206' = array(
     "id" => 206, 
     "firstName" => "KUTAPPA.A.C", 
     "gender" => "M", 
     "age" => 31, 
     "alert" => "bmi" 
    ) 
); 

我想在的foreach數組合並,以創建新的數組,但其沒有工作取得預期的結果。

+1

「它不工作」什麼是不工作?你還沒有發佈任何代碼。循環訪問原始數組,並檢查新數組中是否已存在具有相同ID的鍵(如果存在),則將值添加到'alert',如果不向數組中添加項目。 – h2ooooooo

+0

可能的重複[如何在數組數組上使用array \ _unique?](http://stackoverflow.com/questions/2561248/how-do-i-use-array-unique-on-an-array-數組) –

+0

在詢問之前進行搜索。 Stackoverflow是**完整**的問題和答案像 –

回答

0

嘗試會爲你工作...

<?php 
    $array = array ( 
    $array1 = array(
     "id" => 205, 
     "firstName" => "NANCY GEORGE", 
     "gender" => "F", 
     "age" => 21, 
     "alert" => "bmi" 
    ), 
    $array2 = array(
     "id" => 205, 
     "firstName" => "NANCY GEORGE", 
     "gender" => "F", 
     "age" => 21, 
     "alert" => "bp" 
    ), 
    $array3 = array(
     "id" => 206, 
     "firstName" => "KUTAPPA.A.C", 
     "gender" => "M", 
     "age" => 31, 
     "alert" => "bmi" 
    ) 
); 
echo "<pre>"; print_r($array); 

$newArray =array(); 
foreach($array as $key => $val) 
{ 
    $newArray[$val['id']] = $val; 
} 
echo "<pre>"; print_r($newArray); 

?> 

輸出

Array 
(
    [205] => Array 
     (
      [id] => 205 
      [firstName] => NANCY GEORGE 
      [gender] => F 
      [age] => 21 
      [alert] => bp 
     ) 

    [206] => Array 
     (
      [id] => 206 
      [firstName] => KUTAPPA.A.C 
      [gender] => M 
      [age] => 31 
      [alert] => bmi 
     ) 

) 
1

這可以幫助你。

$arr1 = array(
     "id" => 205, 
     "firstName" => "NANCY GEORGE", 
     "gender" => "F", 
     "age" => 21, 
     "alert" => "bmi" 
    ); 
    $arr2 = array(
     "id" => 205, 
     "firstName" => "NANCY GEORGE", 
     "gender" => "F", 
     "age" => 21, 
     "alert" => "bp" 
    ); 
    $arr3 = array(
     "id" => 206, 
     "firstName" => "KUTAPPA.A.C", 
     "gender" => "M", 
     "age" => 31, 
     "alert" => "bmi" 
    ); 
    $arr4 = array($arr1, $arr2, $arr3); 


    $n = count($arr4); 

    for($i=0; $i<=$n; $i++){ 
     if($arr4[$i]['id'] == $arr4[$i+1]['id']){ 
      $id = $arr4[$i]['id']; 
      foreach($arr4[$i] as $key=>$value){ 
       if($arr4[$i][$key] <> $arr4[$i+1][$key]){ 
        $str = array($arr4[$i][$key], $arr4[$i+1][$key]); 
        $str = implode(',', $str); 
        $arr5[$id][$key] = $str; 
       } 
       else { 
        $arr5[$id][$key] = $arr4[$i][$key]; 
       } 
      } 
      $i++; 
     } 
     elseif($arr4[$i]['id'] <> $arr4[$i+1]['id']) { 
      $id = $arr4[$i]['id']; 
      $arr5[$id] = $arr4[$i]; 
     } 

    } 

    print_r($arr5); 

輸出 -

Array 
(
    [205] => Array 
     (
      [id] => 205 
      [firstName] => NANCY GEORGE 
      [gender] => F 
      [age] => 21 
      [alert] => bmi,bp 
     ) 

    [206] => Array 
     (
      [id] => 206 
      [firstName] => KUTAPPA.A.C 
      [gender] => M 
      [age] => 31 
      [alert] => bmi 
     ) 

) 
1

這應該做的伎倆,但作爲一個評論指出,如果可以修復數據庫,以組爲這你那是最好了。

<?php 
$arrays = array ( 
$array1 = array(
    "id" => 205, 
    "firstName" => "NANCY GEORGE", 
    "gender" => "F", 
    "age" => 21, 
    "alert" => "bmi" 
), 
$array2 = array(
    "id" => 205, 
    "firstName" => "NANCY GEORGE", 
    "gender" => "F", 
    "age" => 21, 
    "alert" => "bp" 
), 
$array3 = array(
    "id" => 206, 
    "firstName" => "KUTAPPA.A.C", 
    "gender" => "M", 
    "age" => 31, 
    "alert" => "bmi" 
) 
); 

$cleanArray; //??? 
foreach($arrays as $array){ 
if(!empty($cleanArray)){ 
    foreach($cleanArray as $cleanKey => $clean){ 
     if($array['id'] == $cleanKey){ 
      //Just did alerts because I hope nothing else needs this... 
      if(!($array['alert'] == $clean['alert'])){ 
       $cleanArray[$cleanKey]['alert'] .= ", " . $array['alert']; 
      } 
     } else { 
      $id = $array['id']; 
      unset($array['id']); 
      $cleanArray[$id] = $array; 
     } 
    } 
} else { 
    $id = $array['id']; 
    unset($array['id']); 
    $cleanArray[$id] = $array; 
} 
} 
echo"<pre>"; 
print_r($cleanArray);