Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/289.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 删除重复的值和值_Php_Arrays - Fatal编程技术网

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
        )

)