if i have an array like this :
如果我有这样的数组:
Array (
[0]=>
Array (
["id"]=> "1"
["desc"]=> "desc 1"
["type"]=> "T"
["date"]=> "17-JAN-12"
)
[1]=>
Array (
["id"]=> "2"
["desc"]=> "desc 2"
["type"]=> "P"
["date"]=> "05-JAN-12"
)
[2]=>
Array (
["id"]=> "1"
["desc"]=> "desc 3"
["type"]=> "P"
["date"]=> "15-JAN-12"
)
[3]=>
Array (
["id"]=> "3"
["desc"]=> "desc 4"
["type"]=> "P"
["date"]=> "06-JAN-12"
)
[4]=>
Array (
["id"]=> "2"
["desc"]=> "desc 5"
["type"]=> "T"
["date"]=> "06-JAN-12"
)
)
I want to remove from it the elements that has duplicate values on only the key "id" , and get :
我想从中删除仅在键“id”上具有重复值的元素,并获取:
Array (
[0]=>
Array (
["id"]=> "1"
["desc"]=> "desc 1"
["type"]=> "T"
["date"]=> "17-JAN-12"
)
[1]=>
Array (
["id"]=> "2"
["desc"]=> "desc 2"
["type"]=> "P"
["date"]=> "05-JAN-12"
)
[2]=>
Array (
["id"]=> "3"
["desc"]=> "desc 4"
["type"]=> "P"
["date"]=> "06-JAN-12"
)
)
Thanks.
2 个解决方案
#1
6
$result = array();
foreach($array as $arr){
if(!isset($result[$arr["id"]])){
$result[$arr["id"]] = $arr;
}
}
#2
2
it seems, that id
is your primary key. so loop through array and insert element to new array only if id
doesn't still exists.
看来,id是你的主键。所以只有当id不存在时才循环遍历数组并将元素插入到新数组中。
$new_array = array();
foreach ($old_array as $entry) {
if (empty($new_array[$entry['id']])) $new_array[$entry['id']] = $entry;
}
$new_array = array_values($new_array);
btw. the last line is only for re-order your keys in final array
顺便说一句。最后一行仅用于在最终数组中重新排序键
#1
6
$result = array();
foreach($array as $arr){
if(!isset($result[$arr["id"]])){
$result[$arr["id"]] = $arr;
}
}
#2
2
it seems, that id
is your primary key. so loop through array and insert element to new array only if id
doesn't still exists.
看来,id是你的主键。所以只有当id不存在时才循环遍历数组并将元素插入到新数组中。
$new_array = array();
foreach ($old_array as $entry) {
if (empty($new_array[$entry['id']])) $new_array[$entry['id']] = $entry;
}
$new_array = array_values($new_array);
btw. the last line is only for re-order your keys in final array
顺便说一句。最后一行仅用于在最终数组中重新排序键