php 使array_unique()不区分大小写

4ioopgfo  于 2023-05-27  发布在  PHP
关注(0)|答案(2)|浏览(173)
$tags_array = explode(',', $tagss);

这给出了类似的结果。
Array([0] => Katha [1] => pooja [2] => singer [3] => katha)
当我使用array_unique不工作给出相同的结果。

//print_r($tags_array);
print_r(array_unique($tags_array));

Array([0] => Katha [1] => pooja [2] => singer [3] => katha)

wvyml7n5

wvyml7n51#

数组中没有重复的值。关于manual page
注意:当且仅当(string)$elem1 ===(string)$elem2时,两个元素被认为相等,即当字符串表示相同时,将使用第一个元素。
然而,在该页面上的用户贡献的注解中有一个解决方案:

function array_iunique($array) { 
    $lowered = array_map('strtolower', $array); 
    return array_intersect_key($array, array_unique($lowered)); 
}
wlzqhblo

wlzqhblo2#

由于输入数组是非数字字符串的集合,因此可以循环遍历该数组并使用临时的小写键填充新数组,并使用null合并赋值运算符仅保留第一个出现的(不区分大小写)值。
代码:(Demo

$array = explode(',', 'Katha,pooja,singer,katha');

$result = [];
foreach ($array as $value) {
    $result[strtolower($value)] ??= $value;
}
var_export(array_values($result));
// ['Katha', 'pooja', 'singer']

通过将??=替换为=,您将有效地保留每个不区分大小写的键的最新出现的值。(Demo

// ['katha', 'pooja', 'singer']

相关问题