Удалить дубликаты и объединить массив в php - PullRequest
0 голосов
/ 21 сентября 2018

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

Как удалить повторяющиеся значения из массива в PHP

array_map("unserialize",array_unique(array_map("serialize", $outer_array)));

, но это на самом деле мне не нужно.мое требование

У меня есть такой массив

INPUT

 Array(
 [0] => Array
        (
            [id] => 1
            [latitude] => 12.9614126
            [longitude] => 77.5610838
            [type] => signature
        )

    [1] => Array
        (
            [id] => 2
            [latitude] => 12.9614126
            [longitude] => 77.5610838
            [type] => customer
        )

    [2] => Array
        (
            [id] => 2
            [latitude] => 12.9614126
            [longitude] => 77.5610838
            [type] => signature
        )
     [3] => Array
        (
            [id] => 2
            [latitude] => 12.9614126
            [longitude] => 77.5610838
            [type] => signature
        )
)

В приведенном выше массиве ключи 1 и 2 содержат одинаковые значения для (id, широта, долгота) , но это отличается для типа.и еще одна вещь тип содержит дубликаты, которые также необходимо удалить

Вот мой ожидаемый результат

ВЫХОД

Array(
     [0] => Array
            (
                [id] => 1
                [latitude] => 12.9614126
                [longitude] => 77.5610838
                [type] => signature
            )

        [1] => Array
            (
                [id] => 2
                [latitude] => 12.9614126
                [longitude] => 77.5610838
                Array
               (
                  [0]=> Array(
                        [type] => customer
                      )
                   [1]=> Array(
                        [type] => signature
                      )
                )
            )
    )

Я пробовал это

$outer_array = array();
$unique_array = array();
foreach($arraydata as $image){
   $inner_array = array();
   $fid_value = $image['id'];
   if(!in_array($image['id'], $unique_array))
   {
   array_push($unique_array, $fid_value);
   array_push($inner_array, $image);
   $outer_array[$fid_value] = $inner_array;
}else{
  array_push($outer_array[$fid_value], $image);
}
}

1 Ответ

0 голосов
/ 21 сентября 2018

Пожалуйста, ознакомьтесь с кодом ниже ожидаемого результата

$arrUnique = [];
$arrResult = [];
$arrUniqueValue = [];
foreach ( $arraydata as $value ) {
    $intID = $value['id'];
    if( in_array( $intID, $arrUnique ) ) {
        foreach ( $value as $k => $v ) {
            if( $arrResult[$intID][$k] == $v )
                continue;
            $arrUniqueValue[$intID][$k][] = $v;
            $arrResult[$intID][$k] = $arrUniqueValue;
        }
    } else {
        array_push( $arrUnique, $intID );
        $arrResult[$intID] = $value;
    }
}

Я надеюсь, что это решит вашу проблему.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...