我想通过比较所有值是否为小写或大写来从数组中获得唯一的数组,这样我就可以获得完美的array.supple.supple假设您在数组中有两个值,例如'php developer'和'Php Developer',两者相同,所以我需要返回仅包含一个值及其“ Php Developer”的数组。
array('php developer','Php Developer');
我需要这个数组如下:
array('Php Developer')
我想通过比较所有值是否为小写或大写来从数组中获得唯一的数组,这样我就可以获得完美的array.supple.supple假设您在数组中有两个值,例如'php developer'和'Php Developer',两者相同,所以我需要返回仅包含一个值及其“ Php Developer”的数组。
答案 0 :(得分:1)
array_unique()
是区分大小写的,因此在该功能看来,Php Developer
和php developer
是不相同的,因此也不是唯一的。
因此,您应该使用带有array_map()
回调的strtolower()
将整个数组转换为小写,然后在其上执行array_unique()
。
$array = array_unique(array_map('strtolower', array('php developer','Php Developer')));
print_r($array); // Outputs 'php developer'
答案 1 :(得分:1)
您可以使用此功能从数组中过滤不区分大小写的值。
方法1:
function array_iunique($array) { // Case insensitive
// lower all array cases of array values
$lowered = array_map('strtolower', $array);
// will fetch unique array first means php developer
// now array_intersect_key will return first match value for php developer
return array_intersect_key($array, array_unique($lowered));
}
方法2:比上述方法快
function array_iunique($array) {
return array_keys(array_flip(array_map('strtolower',$array)));
}
方法3:更快
function array_iunique($array) {
return array_flip(array_flip(array_map('strtolower',$array)));
}
array_map —将回调应用于给定数组的元素
array_intersect_key —使用键进行比较来计算数组的交集
array_flip —交换数组中所有键及其关联的值
array_merge-合并一个或多个数组
array_keys —返回数组的所有键或键的子集
请注意,密钥已保留。如果多个元素在下比较相等 给定的sort_flags,然后是第一个等于的键和值 元素将保留。
注意:当且仅当
(string) $elem1 === (string) $elem2
,即当字符串表示为 同样,将使用第一个元素。
来源link。
答案 2 :(得分:0)
只需使用旧的foreach
添加一个替代项,并且关联数组每个键只能有1个值,这只是将所有项添加到键设置为小写版本的数组中。 ..
$data = array('php developer','Php Developer');
$out = [];
foreach ( $data as $item ) {
$out[strtolower($item)] = $item;
}
print_r($out);
如果最后不需要钥匙,可以使用...
$out = array_values($out);