My Array:
Array ( [0] => Tuesday [1] => Thursday [2] => Friday [3] => Monday
[4] => Tuesday [5] => Monday [6] => Tuesday [7] => Wednesday
)
我想输出数组:
Array ( [0] => Tuesday_1 [1] => Thursday [2] => Friday [3] => Monday_1
[4] => Tuesday_2 [5] => Monday_2 [6] => Tuesday_3 [7] => Wednesday
)
谢谢你的帮助。
$arr = [ 'Tuesday', 'Thursday', 'Friday', 'Monday', 'Tuesday', 'Monday', 'Tuesday', 'Wednesday' ];
$dayCounter = array_fill_keys(array_unique($arr), 0);
$multipleOccurrences = array_filter(array_count_values($arr), fn($item) => $item > 1);
$result = array_reduce(
$arr,
function ($carry, $item) use (&$dayCounter, $multipleOccurrences) {
if (array_key_exists($item, $multipleOccurrences)) {
$dayCounter[$item] += 1;
return [ ...$carry, $item . '_' . $dayCounter[$item] ];
} else {
return [ ...$carry, $item ];
}
},
[]
);