[英]Completely remove duplicates from multidimensional array php
[
{
"co": "INS-00002",
"frequency": "ANNUAL",
"line_No" : 345589
"region": "REG-0006"
},
{
"co": "INS-00002",
"frequency": "MONTHLY",
"line_No" : 345590
"region": "REG-0003"
},
{
"co": "INS-00002",
"frequency": "MONTHLY",
"line_No" : 345578
"region": "REG-0002"
},
{
"co": "INS-00002",
"frequency": "ANNUAL",
"line_No" : 345589
"region": "REG-0006"
},
]
我想要的新 output 数组不应该包含前一个数组中的任何重复值。 它应该看起来像下面的示例
[
{
"co": "INS-00002",
"frequency": "MONTHLY",
"line_No" : 345590
"region": "REG-0003"
},
{
"co": "INS-00002",
"frequency": "MONTHLY",
"line_No" : 345578
"region": "REG-0002"
},
]
您可以创建一个空数组并将每个新项目与其中的所有现有项目进行比较,如果它们不匹配,则将该项目添加到新数组中。
$newArray = array();
foreach ($oldArray as $item)
{
$duplicate = false;
foreach ($newArray as $newItem)
{
if ($item == $newItem)
{
$duplicate = true;
break;
}
}
if (!$duplicate)
{
array_push($newArray, $item);
}
}
print_r($newArray);
array_colum
提取 line_Nos, array_count_values
对它们进行计数, array_filter
从输入数组中过滤那些 line_No 出现次数为 1 的项目。
$input = json_decode('[{"co":"INS-00002","frequency":"ANNUAL","line_No":345589,"region":"REG-0006"},{"co":"INS-00002","frequency":"MONTHLY","line_No":345590,"region":"REG-0003"},{"co":"INS-00002","frequency":"MONTHLY","line_No":345578,"region":"REG-0002"},{"co":"INS-00002","frequency":"ANNUAL","line_No":345589,"region":"REG-0006"}]');
// get all line_No values into array
$line_nos = array_column($input, 'line_No');
// count the number of time those values occur
$line_no_occurrences = array_count_values($line_nos);
// filter input array, take only those items whose line_No occurs with a count of 1
$result = array_filter($input, function($item) use($line_no_occurrences) {
return $line_no_occurrences[$item->line_No] == 1;
});
var_dump($result);
Output:
array (size=2)
1 =>
object(stdClass)[2]
public 'co' => string 'INS-00002' (length=9)
public 'frequency' => string 'MONTHLY' (length=7)
public 'line_No' => int 345590
public 'region' => string 'REG-0003' (length=8)
2 =>
object(stdClass)[3]
public 'co' => string 'INS-00002' (length=9)
public 'frequency' => string 'MONTHLY' (length=7)
public 'line_No' => int 345578
public 'region' => string 'REG-0002' (length=8)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.