【问题标题】:(remove duplicated) reindex multidimensional array php jquery [duplicate](删除重复)重新索引多维数组php jquery [重复]
【发布时间】:2015-07-11 04:10:57
【问题描述】:
[{
    "sys_id": "2015-07-018",
    "account_id": "2015-07-018",
    "Names": [{
        "fname": "Jackie",
        "mname": "Lee",
        "lname": "Chan",
        "suffix": "Jr",
        "city": "Tokyo",
        "town": "Shinagawa-ku",
        "dstrct": "District 2",
        "street": "Jr",
        "contactnum": "1234"
    }, {
        "fname": "Jackie",
        "mname": "Lee",
        "lname": "Chan",
        "suffix": "Jr",
        "city": "Tokyo",
        "town": "Shinagawa-ku",
        "dstrct": "District 2",
        "street": "Jr",
        "contactnum": "1234"
    }, {
        "fname": "Jackie",
        "mname": "Lee",
        "lname": "Chan",
        "suffix": "Jr",
        "city": "Tokyo",
        "town": "Shinagawa-ku",
        "dstrct": "District 2",
        "street": "Jr",
        "contactnum": "1234"
    }, {
        "fname": "Jackie",
        "mname": "Lee",
        "lname": "Chan",
        "suffix": "Sr",
        "city": "Tokyo",
        "town": "Shinagawa-ku",
        "dstrct": "District 2",
        "street": "Sr",
        "contactnum": "1234"
    }, {
        "fname": "Jackie",
        "mname": "Lee",
        "lname": "Chan",
        "suffix": "Sr",
        "city": "Tokyo",
        "town": "Shinagawa-ku",
        "dstrct": "District 2",
        "street": "Sr",
        "contactnum": "1234"
    }, {
        "fname": "Jackie",
        "mname": "Lee",
        "lname": "Chan",
        "suffix": "Sr",
        "city": "Tokyo",
        "town": "Shinagawa-ku",
        "dstrct": "District 2",
        "street": "Sr",
        "contactnum": "1234"
    }]
}]

这是我来自 ajax 请求的结果我想从服务器端或 jquery 端的结果中删除重复项我已经尝试过最常见的删除重复数组的方法,例如

$input = array_map("unserialize", array_unique(array_map("serialize", $new_data)));
$new_data1 = array_values($input);
echo json_encode($new_data1, JSON_UNESCAPED_UNICODE);

$new_data 中的哪里是我的选择查询的结果。 print_r($new_data) 将导致

Array(
    [2015 - 07 - 018] => Array(
        [sys_id] => 2015 - 07 - 018[account_id] => 2015 - 07 - 018[Names] => Array(
            [0] => Array(
                [fname] => Jackie[mname] => Lee[lname] => Chan[suffix] => Jr[city] => Tokyo[town] => Shinagawa - ku[dstrct] => District 2[street] => Jr[contactnum] => 1234)[1] => Array(
                [fname] => Jackie[mname] => Lee[lname] => Chan[suffix] => Jr[city] => Tokyo[town] => Shinagawa - ku[dstrct] => District 2[street] => Jr[contactnum] => 1234)[2] => Array(
                [fname] => Jackie[mname] => Lee[lname] => Chan[suffix] => Jr[city] => Tokyo[town] => Shinagawa - ku[dstrct] => District 2[street] => Jr[contactnum] => 1234)[3] => Array(
                [fname] => Jackie[mname] => Lee[lname] => Chan[suffix] => Sr[city] => Tokyo[town] => Shinagawa - ku[dstrct] => District 2[street] => Sr[contactnum] => 1234)[4] => Array(
                [fname] => Jackie[mname] => Lee[lname] => Chan[suffix] => Sr[city] => Tokyo[town] => Shinagawa - ku[dstrct] => District 2[street] => Sr[contactnum] => 1234)[5] => Array(
                [fname] => Jackie[mname] => Lee[lname] => Chan[suffix] => Sr[city] => Tokyo[town] => Shinagawa - ku[dstrct] => District 2[street] => Sr[contactnum] => 1234))))

Update

我试过print_r($new_data1);的结果和print_r($new_data);的结果一模一样

寻找删除重复的方法我发现了这个

function super_unique($array) { $result = array_map("unserialize", array_unique(array_map("serialize", $array))); foreach($result as $key => $value) { if (is_array($value)) { $result[$key] = super_unique($value); } } return $result; }

我现在要做的任务是重新索引数组,因为输出是

Array ( [1] => Array ( [sis_id] => 2015-07-018 [account_id] => 2015-07-018 [Names] => Array ( [0] => Array ( [fname] => Jackie [mname] => Lee [lname] => Chan [suffix] => Jr [city] => Tokyo [town] => Shinagawa-ku [brgy] => District 2 [contactnum] => 1234 ) [3] => Array ( [fname] => Jackie [mname] => Lee [lname] => Chan [suffix] => Sr [city] => Tokyo [town] => Shinagawa-ku [brgy] => District 2 [contactnum] => 1234 ) ) ) ) 

我想要输出的旧格式

【问题讨论】:

    标签: javascript php jquery arrays multidimensional-array


    【解决方案1】:

    如果您将数组中的每个对象序列化为字符串(我认为 json 最简单),然后使用本机函数删除重复项,然后反序列化回对象,该怎么办?

    Sudo 代码如下所示:

    $serialized_array = [];
    foreach($new_data as $data) {
        $serialized_array[] = json_encode($data);
    }
    
    $new_data = []; //reset new_data
    $unique = array_unique($serialized_array);
    foreach($serialized_array as $string) {
        $new_data[] = json_decode($string);
    }
    //new_data should now only contain unique data
    

    你正在做的事情和这之间的主要区别是序列化和反序列化每个对象单独而不是整个数组。这是关键。

    【讨论】:

    • 我是否需要更改代码的任何内容,因为当我尝试它时,ouyput 仍然是http://pastebin.com/jd0HUW7Z
    • 更改什么代码?我的答案中的代码只是使用 php 语法的 sudo 代码,所以它可能需要一些 tweeks 才能工作。
    猜你喜欢
    • 2016-11-04
    • 2016-11-18
    • 1970-01-01
    • 1970-01-01
    • 2021-12-22
    • 1970-01-01
    • 2017-07-23
    • 2017-01-01
    • 2015-05-22
    相关资源
    最近更新 更多