删除重复并在php中合并数组

时间:2018-09-21 10:21:07

标签: php arrays multidimensional-array

嗨,请帮我找到重复的值,并将值组合到数组中。 我用

检查过
  

How to remove duplicate values from an array in PHP

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

但这实际上不是我所需要的。我的要求是

我有一个像这样的数组

  

输入

 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,latitude,longitude)值相同,但类型不同。 还有一件事是类型包含重复的内容,也需要删除

这是我的预期结果

  

输出

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 :(得分:0)

请参考下面的代码以获得预期的结果

$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;
    }
}

我希望这能解决您的问题。