Php 删除重复的值和值
我尝试了许多方法来消除数组中值的重复,但无法删除值和重复项Php 删除重复的值和值,php,arrays,Php,Arrays,我尝试了许多方法来消除数组中值的重复,但无法删除值和重复项 Array ( [0] => Array ( [rut] => 333333333 [inscripcion_id] => 3940 ) [1] => Array ( [rut] => 444444444 [inscripcion_id] => 3941 ) [2] => Array (
Array
(
[0] => Array
(
[rut] => 333333333
[inscripcion_id] => 3940
)
[1] => Array
(
[rut] => 444444444
[inscripcion_id] => 3941
)
[2] => Array
(
[rut] => 333333333
[inscripcion_id] => 3985
)
)
我想得到的是,在这种情况下,只剩下:
Array
(
[rut] => 444444444
[inscripcion_id] => 3941
)
而其他方法将重复值保存在数组中。我的解决方案:
function unique_multidim_array($arreglo){
$duplicate = array();
$i = 0;
foreach ($arreglo as $a) {
foreach ($a as $b) {
$count_values[$b]++;
}
}
foreach ($arreglo as $key) {
if($count_values[$key['rut']] > 1){
$duplicate[$i] = $key;
$i++;
}
}
return $duplicate;
}
返回:
Array
(
[0] => Array
(
[rut] => 333333333
[inscripcion_id] => 3940
)
[1] => Array
(
[rut] => 333333333
[inscripcion_id] => 3985
)
)
这是我的尝试…这需要通过PHP5.5.0
$arr1 = Array
(
"0" => Array
(
"rut" => 333333333,
"inscripcion_id" => 3940
),
"1" => Array
(
"rut" => 444444444,
"inscripcion_id" => 3941
),
"2" => Array
(
"rut" => 333333333,
"inscripcion_id" => 3985
),
"3" => Array
(
"rut" => 555555555,
"inscripcion_id" => 3987
)
);
$unique_array = array();
$unique_value = array_keys(array_count_values(array_column($arr1, "rut") ), 1, true);
foreach ($arr1 as $key => $inner_arr) {
if (in_array($inner_arr["rut"], $unique_value) ) {
$unique_array[] = $arr1[$key];
unset($arr1[$key]);
}
}
输出($arr1
):
输出($unique_数组
):
这里有一个
我必须指出,原始数组键将无法处理unset方法,您试图获得预期的输出是什么?这个问题以前已经回答过了。看看@FergalAndrews,它对我不起作用,可能是因为它是一个多重的arrangement@sioesi这就是你要找的吗?我需要删除将“rut”字段加倍的项,即消除相同子数组的代码。O(n^2)+O(n)?一定存在更好的方法来消除重复。谢谢你的回答,不幸的是,我正在处理一个较低版本的PHP,所以array_列对我不起作用,无论如何,谢谢@你使用的是什么版本的php??
Array
(
[0] => Array
(
[rut] => 333333333
[inscripcion_id] => 3940
)
[2] => Array
(
[rut] => 333333333
[inscripcion_id] => 3985
)
)
Array
(
[0] => Array
(
[rut] => 444444444
[inscripcion_id] => 3941
)
[1] => Array
(
[rut] => 555555555
[inscripcion_id] => 3987
)
)