2016-03-08 5 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" 
    ) 
); 

Я пытаюсь объединить массив в Еогеасп, чтобы создать новый массив, но он не работает, чтобы получить ожидаемый результат.

+1

«это не работает», что не работает? Вы не отправили никакого кода. Прокрутите исходный массив и проверьте, существует ли ключ в вашем новом массиве с тем же идентификатором, если он существует, добавьте значение в 'alert', если не добавить элемент в массив. – h2ooooooo

+0

Возможный дубликат [Как использовать массив \ _unique для массива массивов?] (Http://stackoverflow.com/questions/2561248/how-do-i-use-array-unique-on-an-array- из массивов) –

+0

Поиск до этого. Stackoverflow ** полный ** вопросов и ответов, подобных этому –

ответ

0

Try будет работать для вас ...

<?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); 

output-

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); 
Смежные вопросы