我正在尝试查找数组的第二维值是否相同,以便我可以处理它们。
我查看了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
具有相同的值
答案 0 :(得分:2)
这是一种方法。首先获取corrected_time
的值并将它们转换为字符串(因为我们将在array_count_values
中使用它们,这只适用于整数和字符串)。
$times = array_map('strval', array_column($your_array, 'corrected_time'));
然后使用array_count_values
和array_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);