从multidimentional数组中删除重复值

时间:2015-07-03 13:35:36

标签: php arrays

下面是结果,我想删除数组中的副本

我尝试使用此代码:$login_data1['items'] = array_values(array_map("unserialize", array_unique(array_map("serialize", $login_data1['items']))));

{
"items": [
    {
        "id": "2",
        "tags": [
            {
                "name": "Microsoft"
            }
        ],
        "type": "manual",
    },
    {
        "id": "1",
        "tags": [
            {
                "name": "Snow Leopard"
            }
        ],
        "type": "faq"
    },
    {
        "id": "2",
        "tags": [
            {
                "name": "Microsoft"
            }
        ],
       "type": "manual"
    }
],

}

我尝试使用$login_data1['items'] = array_unique($login_data1['items'] ,SORT_REGULAR);,但这会在每个json响应中添加序列号

请帮我解决这个问题。 提前谢谢。

4 个答案:

答案 0 :(得分:2)

尝试使用array_unique

$json = '{
"items": [
    {
        "id": "2",
        "tags": [
            {
                "name": "Microsoft"
            }
        ],
        "type": "manual"
    },
    {
        "id": "1",
        "tags": [
            {
                "name": "Snow Leopard"
            }
        ],
        "type": "faq"
    },
    {
        "id": "2",
        "tags": [
            {
                "name": "Microsoft"
            }
        ],
       "type": "manual"
    }
]
}';

foreach(json_decode($json, true) as $key => $value){
    $input = array_unique($value,SORT_REGULAR);
}

如果它是一个数组,那么只需使用

array_unique($login_data['items'],SORT_REGULAR);

Fiddle

答案 1 :(得分:0)

如果传递多维数组,

array_unique可以很好地工作。

$login_data1['items'] = array_unique($login_data1['items'], SORT_REGULAR);

它不适用于你的json,因为它是一个对象数组。 INFACT:

  $array = json_decode($json);
  var_dump($array);

返回:

    object(stdClass)#1 (1) {
  ["items"]=>
  array(3) {
    [0]=>
    object(stdClass)#2 (3) {
      ["id"]=>
      string(1) "2"
      ["tags"]=>
      array(1) {
        [0]=>
        object(stdClass)#3 (1) {
          ["name"]=>
          string(9) "Microsoft"
        }
      }
      ["type"]=>
      string(6) "manual"
    }
    [1]=>
    object(stdClass)#4 (3) {
      ["id"]=>
      string(1) "1"
      ["tags"]=>
      array(1) {
        [0]=>
        object(stdClass)#5 (1) {
          ["name"]=>
          string(12) "Snow Leopard"
        }
      }
      ["type"]=>
      string(3) "faq"
    }
    [2]=>
    object(stdClass)#6 (3) {
      ["id"]=>
      string(1) "2"
      ["tags"]=>
      array(1) {
        [0]=>
        object(stdClass)#7 (1) {
          ["name"]=>
          string(9) "Microsoft"
        }
      }
      ["type"]=>
      string(6) "manual"
    }
  }
}

你的json应该是这样的:

{
"items": [
    {
        "id": "2",
        "tags": {
            "name": "Microsoft"
        },
        "type": "manual"
    },
    {
        "id": "1",
        "tags": {
            "name": "Snow Leopard"
        },
        "type": "faq"
    },
    {
        "id": "2",
        "tags": {
            "name": "Microsoft"
        },
        "type": "manual"
    },
    {
        "id": "2",
        "tags": {
            "name": "Microsoft"
        },
        "type": "manual"
    }
]
}

现在:

  $array = json_decode($json);
  var_dump($array);

返回:

array(1) {
  ["items"]=>
  array(4) {
    [0]=>
    array(3) {
      ["id"]=>
      string(1) "2"
      ["tags"]=>
      array(1) {
        ["name"]=>
        string(9) "Microsoft"
      }
      ["type"]=>
      string(6) "manual"
    }
    [1]=>
    array(3) {
      ["id"]=>
      string(1) "1"
      ["tags"]=>
      array(1) {
        ["name"]=>
        string(12) "Snow Leopard"
      }
      ["type"]=>
      string(3) "faq"
    }
    [2]=>
    array(3) {
      ["id"]=>
      string(1) "2"
      ["tags"]=>
      array(1) {
        ["name"]=>
        string(9) "Microsoft"
      }
      ["type"]=>
      string(6) "manual"
    }
    [3]=>
    array(3) {
      ["id"]=>
      string(1) "2"
      ["tags"]=>
      array(1) {
        ["name"]=>
        string(9) "Microsoft"
      }
      ["type"]=>
      string(6) "manual"
    }
  }
}

array_unique有效。

答案 2 :(得分:0)

我得到了解决方案。

$login_data1['items'] =array_values(array_unique($login_data1['items'] ,SORT_REGULAR));

一起尝试array_value和array_unique,并删除序列号!

答案 3 :(得分:0)

$login_data1['items'] =array_values(array_unique($login_data1['items'] ,SORT_REGULAR));