2016-10-24 3 views
0

Я работаю на небольшой PHP скрипт, в настоящее время у меня есть массив как этотУдалить повторяющиеся значения из массива с игнорированием последние два символа

[0] yassine#m, [1] yassine#f, [2] Dolmi#m , [3] yassine#l 

Я хочу PHP, чтобы проверить, есть ли дублированный элемент (Ясин в этом случае) и вернуть что-то вроде этого.

[0] yassine , [1] Dolmi#m 

array_unique не будет работать. И я действительно не знаю, как это решить. Если искать решение в Интернете, но, похоже, не находит его. Кто-нибудь может помочь?

+0

Итак, вы хотите просто «yassine», потому что есть несколько 'yassine' или должно [2] быть' Dolmi'? Почему бы не использовать стандартный цикл foreach с использованием substr? – Devon

+0

Существует несколько yassine с тремя разными тегами (# m, # f, # l), поэтому я хочу, чтобы всякий раз, когда есть одинаковое значение с разными тегами, все они должны быть удалены и сохранить значение без тэгов. и если есть значение с одним тегом, его нужно просто сохранить. –

ответ

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); 

?> 
0

Проверьте следующее решение

http://ideone.com/fork/kJlLbs

<?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); 
Смежные вопросы