Как я могу удалить повторяющиеся значения из массива в PHP?
использование array_unique ().
Пример:
$array = array(1, 2, 2, 3);
$array = array_unique($array); // Array is now (1, 2, 3)
//Find duplicates
$arr = array(
'unique',
'duplicate',
'distinct',
'justone',
'three3',
'duplicate',
'three3',
'three3',
'onlyone'
);
$unique = array_unique($arr);
$dupes = array_diff_key( $arr, $unique );
// array( 5=>'duplicate', 6=>'three3' 7=>'three3' )
// count duplicates
array_count_values($dupes); // array( 'duplicate'=>1, 'three3'=>2 )
использование array_values(array_unique($array));
array_unique
: для уникального массива
array_values
: для переиндексации
$result = array();
foreach ($array as $key => $value){
if(!in_array($value, $result))
$result[$key]=$value;
}
иногда array_unique()
это не путь,
если ты хочешь получить уникальные и дублированные предметы…
$unique=array("","A1","","A2","","A1","");
$duplicated=array();
foreach($unique as $k=>$v) {
if( ($kt=array_search($v,$unique))!==false and $k!=$kt )
{ unset($unique[$kt]); $duplicated[]=$v; }
}
sort($unique); // optional
sort($duplicated); // optional
результаты на
array ( 0 => '', 1 => 'A1', 2 => 'A2', ) /* $unique */
array ( 0 => '', 1 => '', 2 => '', 3 => 'A1', ) /* $duplicated */
Единственное, что сработало для меня:
$array = array_unique($array, SORT_REGULAR);
explode(",", implode(",", array_unique(explode(",", $YOUR_ARRAY))));
Это позаботится о связях ключей и сериализует ключи для получающегося нового массива 🙂
Мы можем создать массив такого типа, чтобы использовать это последнее значение, которое будет обновлено до значения столбца или ключа, и мы получим уникальное значение из массива …
$array = array (1,3,4,2,1,7,4,9,7,5,9);
$data=array();
foreach($array as $value ){
$data[$value]= $value;
}
array_keys($data);
OR
array_values($data);