【问题标题】:Delete duplicate from json array从 json 数组中删除重复项
【发布时间】:2016-01-05 00:45:08
【问题描述】:

代码:

$decode = json_decode($get, TRUE);
    foreach($decode['List'] as $lst) {

    }

我有一个数组 $lst,看起来像这样:

"List":[{
    "Name":"Ivan",
    "Surname":"Petrov",
}, {
    "Name":"Ivan",
    "Surname":"Ivanov",
}, {
    "Name":"Andrey",
    "Surname":"Sidorov",
}]

我需要删除重复项,以便保留这样的内容(重复的“名称”):

"List":[{
    "Name":"Ivan",
    "Surname":"Petrov",
}, {
    "Name":"Andrey",
    "Surname":"Sidorov",
}]

【问题讨论】:

  • 您打算如何进行过滤? PHP?
  • 是的,php。例如,我需要输入:$lst,输出 $lst2。
  • $json = <<<JSON [ {"a":"abc","b:":"10"}, {"a":"abd","b:":"12"}, {"a":"abc","b:":"14"}, {"a":"abe","b:":"15"}, {"a":"abf","b:":"16"}, {"a":"abg","b:":"17"}, {"a":"abg","b:":"19"} ] JSON; $json_array = json_decode( $json, TRUE ); $new_array = array(); $exists = array(); foreach( $json_array as $element ) { if( !in_array( $element['a'], $exists )) { $new_array[] = $element; $exists[] = $element['a']; } } print json_encode( $new_array );

标签: arrays json duplicates unique


【解决方案1】:

使用lodash:

var list = [{
    "Name":"Ivan",
    "Surname":"Petrov",
}, {
    "Name":"Ivan",
    "Surname":"Ivanov",
}, {
    "Name":"Andrey",
    "Surname":"Sidorov",
}];

var noDupsList = _.uniq(list, 'Name');

alert(JSON.stringify(noDupsList));
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/3.10.1/lodash.js"></script>

【讨论】:

  • 我能做到吗,因为我有数组作为 $lst: var = list;列表 = $lst;以及新的唯一数组 var 作为 $lstuniq
【解决方案2】:

我认为不存在实现此目的的预定义函数。

但是您通过迭代应用比较,并且可以使用删除运算符从 json 中删除重复的比较 喜欢 删除 x[0]

【讨论】:

    猜你喜欢
    • 2016-11-24
    • 2017-06-09
    • 1970-01-01
    • 2013-06-09
    • 2011-06-29
    • 2011-01-04
    相关资源
    最近更新 更多