删除重复的值和值

时间:2015-11-20 14:47:34

标签: php arrays

我尝试了很多方法来消除数组中值的重复但是我无法删除值和重复。

function shallowCopy(src, dst) {
  if (isArray(src)) {
    dst = dst || [];

    for (var i = 0, ii = src.length; i < ii; i++) {
      dst[i] = src[i];
    }
  } else if (isObject(src)) {
    dst = dst || {};

    for (var key in src) {
      if (!(key.charAt(0) === '$' && key.charAt(1) === '$')) {
        dst[key] = src[key];
      }
    }
  }

  return dst || src;
}

我想得到的只是留在这种情况下:

Array
(
[0] => Array
    (
        [rut] => 333333333
        [inscripcion_id] => 3940
    )

[1] => Array
    (
        [rut] => 444444444
        [inscripcion_id] => 3941
    )

[2] => Array
    (
        [rut] => 333333333
        [inscripcion_id] => 3985
    )

 )

其他人在数组中保存重复值。

2 个答案:

答案 0 :(得分:0)

我的解决方案:

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
    )

 )

答案 1 :(得分:0)

这是我的尝试......这需要php 5.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):

Array
(
    [0] => Array
        (
            [rut] => 333333333
            [inscripcion_id] => 3940
        )

    [2] => Array
        (
            [rut] => 333333333
            [inscripcion_id] => 3985
        )

)

输出($unique_array):

Array
(
    [0] => Array
        (
            [rut] => 444444444
            [inscripcion_id] => 3941
        )

    [1] => Array
        (
            [rut] => 555555555
            [inscripcion_id] => 3987
        )

)

这是demo

我必须指出原始数组键不会按顺序处理未设置的方法