删除重复数组,其中key->值出现两次 - 只留下一个数组

时间:2015-08-11 19:40:33

标签: php arrays

如果内部数组中存在重复项,则删除数组 - 如我们所见[0] [' user']及其1,数组1中显示相同内容,我想要的数组只包含一个与哪一个不相关的数组 - 如果我得到一个返回的重复消息,那么这个数组也会很好,例如,数组长度可以在1到10之间变化。我尝试了一些已经在stackoverflow上提供的代码,用于独特的多维数组,但似乎不适用于我。

这是html方法。由于选择了相同的用户名,用户可以复制

enter image description here

array(3) {
  [0]=>
  array(6) {
    ["user"]=>
    string(1) "1"
    ["role"]=>
    string(1) "1"
    ["can_edit"]=>
    NULL
    ["can_read"]=>
    NULL
    ["can_execute"]=>
    NULL
    ["is_admin"]=>
    NULL
  }
  [1]=>
  array(6) {
    ["user"]=>
    string(1) "1"
    ["role"]=>
    string(1) "2"
    ["can_edit"]=>
    NULL
    ["can_read"]=>
    NULL
    ["can_execute"]=>
    NULL
    ["is_admin"]=>
    NULL
  }
}

用于示例输出的代码

foreach ($this->input->post() as $key => $value)
{
         if(preg_match("/^user.{1,2}$/",$key)>0) {
           $postvars[] = $key;
        }
        if(preg_match("/^user.{1,2}$/",$key)>0) {
           $postvalues[] = $value;
        }
}
$filterArray = array_combine($postvars, $postvalues);
function array_unique_multidimensional($input)
{
    $serialized = array_map('serialize', $input);
    $unique = array_unique($serialized);
    return array_intersect_key($input, $unique);
}

foreach (array_unique_multidimensional($postvars) as $key)
{
    preg_match("|\d+|", $key, $m);
    $user = $filterArray[$key];
    $role = $this->input->post('role'.$m[0]);
    $can_edit = $this->input->post('can_edit'.$m[0]);
    $can_read = $this->input->post('can_read'.$m[0]);
    $can_execute = $this->input->post('can_execute'.$m[0]);
    $is_admin = $this->input->post('is_admin'.$m[0]);

    $records[] = array('user' => $user,'role'=>$role,'can_edit'=>$can_edit,'can_read' =>$can_read,'can_execute' =>$can_execute,'is_admin'=>$is_admin);
}

var_dump($records);

1 个答案:

答案 0 :(得分:1)

var_dump(array_unique_multidimensional($records));