在多维数组中查找重复值

时间:2016-11-10 19:29:05

标签: php arrays codeigniter multidimensional-array

我正在尝试查找数组的第二维值是否相同,以便我可以处理它们。

我查看了array_unique和其他提出类似问题的人,但他们都删除了这些值而不是返回它们。

说我有这样的数组:

array(
    [0] => array(
        [laps] => 7,
        [corrected_time] => 18
    ),
    [1] => array(
        [laps] => 6,
        [corrected_time] => 18
    ),
    [2] => array(
        [laps] => 7,
        [corrected_time] => 18.5
    )
)

我想让它返回:array(0,1),因为它们对corrected time具有相同的值

1 个答案:

答案 0 :(得分:2)

这是一种方法。首先获取corrected_time的值并将它们转换为字符串(因为我们将在array_count_values中使用它们,这只适用于整数和字符串)。

$times = array_map('strval', array_column($your_array, 'corrected_time'));

然后使用array_count_valuesarray_filter查找多次出现的所有值。

$repeats = array_filter(array_count_values($times), function($time) {
    return $time > 1;
});

获得重复次数列表后,您可以use过滤原始数组,只包含重复次数的项目。

$multiples = array_filter($your_array, function($item) use ($repeats){
    return isset($repeats[(string) $item['corrected_time']]);
});

您可以对此进行迭代,或者如果您只想要密钥,则可以使用

获取密钥
$keys = array_keys($multiples);