嗨,请帮我找到重复的值,并将值组合到数组中。 我用
检查过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);
}
}
答案 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;
}
}
我希望这能解决您的问题。