我正在开发一个小的PHP脚本,目前我有一个像这样的数组
[0] yassine#m, [1] yassine#f, [2] Dolmi#m , [3] yassine#l
我希望PHP检查是否存在重复元素(在本例中为yassine)并返回类似的内容。
[0] yassine , [1] Dolmi#m
array_unique不会工作。而且我真的不知道如何解决这个问题。如果在互联网上寻找解决方案,但似乎没有找到它。有人可以帮忙吗?
答案 0 :(得分:0)
我认为这可能适合你。
首先按值排序数组,然后使用substr(), strpos()
和array_push()
的组合根据需要创建新数组
然后使用array_unique()
<?php
$oldarray = array("suman#1","suman#2","suman#3","sujan#1","suresh#2","");
// first sort array by value so matching value comes together
asort($oldarray);
$newarray = array();
$count = count($oldarray);
for($i=0; $i < $count-1; $i++){
$a = $oldarray[$i];
$b = $oldarray[$i+1];
if($i == 0)
$c = "";
else
$c = $oldarray[$i-1];
if(substr($a,0,strpos($a,"#")) == substr($b,0,strpos($b,"#")) || substr($a,0,strpos($a,"#")) == substr($c,0,strpos($c,"#")) ){
array_push($newarray,substr($a,0,strpos($a,"#")));
}
else
array_push($newarray,$a);
}
print_r($oldarray);
// now remove duplicate value from new array
$newarray = array_unique($newarray);
print_r($newarray);
?>
答案 1 :(得分:0)
检查以下解决方案
<?php
function generateUniqueList ($arr){
$ret = array();
foreach ($arr as $value) {
$key = explode("#", $value)[0];
if (array_key_exists($key, $ret)) {
$ret[$key] = $key;
}
else {
$ret[$key] = $value;
}
}
return array_values($ret);
}
$arr = array("yassine#m","yassine#f","Dolmi#m", "yassine#l");
$list = generateUniqueList ($arr);
print_r($list);