我想删除以下数组的重复项。我想按第一个值分组,然后重建索引。
即
Array
(
[0] => Array
(
[title] => California
[state_id] => 1
)
[1] => Array
(
[title] => California
[state_id] => 1
)
[2] => Array
(
[title] => New Mexico
[state_id] => 2
)
[3] => Array
(
[title] => Washington
[state_id] => 3
)
[4] => Array
(
[title] => Montana
[state_id] => 4
)
[5] => Array
(
[title] => Montana
[state_id] => 4
)
)
到
Array
(
[0] => Array
(
[title] => California
[state_id] => 1
)
[2] => Array
(
[title] => New Mexico
[state_id] => 2
)
[3] => Array
(
[title] => Washington
[state_id] => 3
)
[4] => Array
(
[title] => Montana
[state_id] => 4
)
)
重建 key
Array
(
[0] => Array
(
[title] => California
[state_id] => 1
)
[1] => Array
(
[title] => New Mexico
[state_id] => 2
)
[2] => Array
(
[title] => Washington
[state_id] => 3
)
[3] => Array
(
[title] => Montana
[state_id] => 4
)
)
最佳答案
$array = array_values(array_combine(array_map(function ($i) { return $i['title']; }, $array), $array));
即
- 提取
title
键(array_map
) - 使用提取的标题作为新数组的键并将其与旧数组组合 (
array_combine
),这会删除数组的重复项(键必须是唯一的) - 通过
array_values
运行结果,丢弃键
分割:
$keys = array_map(function ($i) { return $i['title']; }, $array);
$deduped = array_combine($keys, $array);
$result = array_values($deduped);
对于 PHP 5.2,您需要像这样编写匿名回调函数:
array_map(create_function('$i', 'return $i["title"];'), $array)
关于php 唯一/组关联数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7231260/