2014-11-19 6 views
0

Мне нужно сравнить значения массива друг с другом. Эти значения являются уникальными идентификаторами. Поэтому необходимо проверить, повторяются ли значения ID.Как сравнить значения массива в php?

<?php 
$id=array("firstid2012","secondid2014","thirddid2010","fourthid2014"); 
$idcount=count($id); 
for($i=0;$i<$idcount;$i++){ 
//how to compare?? 
} 
?> 

Если повторяется идентификатор верно, то я должен изменить значение этого массива value.So мне нужно знать, какой массив значение повторяется также.

+0

не нужно для цикла. Попробуйте array_unique –

+0

Вы пытаетесь ** удалить дублирующиеся значения ** в массиве или ** отображать значения, которые повторяются **? Может быть, вы можете привести пример значений массива и того, что вы ожидаете? – ekad

+0

Я не хочу удалять повторяющиеся значения. Я хочу отобразить значение повторяющегося массива. – vidhya

ответ

1
if (count($idvalues) == count(array_unique($idvalues))){ 
    //ALL VALUES ARE DISTINCTS 
} 
else { 
    //THERE ARE DUPLICATED VALUES 
    $duplicated=array(); 
    $visited=array(); 
    foreach($idvalues as $value){ 
     if (in_array($value,$visited)){ 
     $duplicated[]=$value; 
     } 
     $visited[]=$value; 
    } 
    $duplicated=array_uniq($duplicated); 
} 
+1

Этот код полезен для проверки дублированных значений. Но как получить, какое значение массива дублируется – vidhya

+0

Я отредактировал для вас мой ответ – Serpes

+0

Получил предупреждение «in_array() ожидает, что параметр 2 будет массивом» – vidhya

0

Это самый быстрый способ получить все уникальные значения из массива:

$unique = array_keys(array_flip($array)); 

В бэкэнд используется hashmap, тогда как если вы используете array_unique, который просто выполняет итерацию над массивом, что очень неэффективно. Разница в порядках.

-1

Простой способ будет

<?php 
$id[]=$idvalues; 
$idcount=count($id); 
for($i=0;$i<$idcount;$i++){ 
    for($ii=0; $ii<$idcount;$ii++) 
    { 
    if($i != $ii) //We don't want to compare the same index to itself 
    { 
     if($id[$i] == $id[$ii]) 
     { 
     //Found same values at both $i and $ii 
     //As the code is here, each duplicate will be detected twice 
     } 
    } 
} 
?> 
0

Вы можете использовать array_unique(), чтобы получить массив всех уникальных значений, а затем сравнить размер от исходного массива:

if (count(array_unique($submitted_genres)) !== count($submitted_genres)) { 
// there's at least one dupe 
} 
0

Вам не нужно запускать любой цикл для этого просто используйте array_unique(); i добавил fourid2014 дважды

$id[] = array("firstid2012", "secondid2014", "thirddid2010", "fourthid2014", "fourthid2014"); 
print_r($id[0]); // print it 5 values 
$result = array_unique($id[0]); 
print_r($result);// print it 4 values 
+0

array_unique() удалит дубликат –

Смежные вопросы