Как найти уникальные значения в массиве
Здесь я хочу найти unique
значения, поэтому я пишу код, как это, но я не могу получить ответ, для меня не хочу, чтобы массив формата. я хочу только строку
<?php
$array = array("kani","yuvi","raja","kani","mahi","yuvi") ;
$unique_array = array(); // unique array
$duplicate_array = array(); // duplicate array
foreach ($array as $key=>$value){
if(!in_array($value,$unique_array)){
$unique_array[$key] = $value;
}else{
$duplicate_array[$key] = $value;
}
}
echo "unique values are:-<br/>";
echo "<pre/>";print_r($unique_array);
echo "duplicate values are:-<br/>";
echo "<pre/>";print_r($duplicate_array);
?>
3 ответа
Ты можешь использовать array_unique()
в одну строку, как показано ниже: -
<?php
$unique_array = array_unique($array); // get unique value from initial array
echo "<pre/>";print_r($unique_array); // print unique values array
?>
Вывод: - https://eval.in/601260
Ссылка: - http://php.net/manual/en/function.array-unique.php
Если вы хотите в строковом формате: -
echo implode(',',$final_array);
Вывод: - https://eval.in/601261
То, как вы хотите, здесь: -
ИЛИ ЖЕ
Я сбит с толку вашим выбором в качестве принятого ответа - я не могу представить, как он может удовлетворить ваши требования.
array_count_values()
был доступен с PHP4, так что это герой, которого можно здесь назвать.
Код: (Демо)
$array = array("kani","yuvi","raja","kani","mahi","yuvi") ;
$counts = array_count_values($array); // since php4
foreach ($counts as $value => $count) {
if ($count == 1) {
$uniques[] = $value;
} else {
$duplicates[] = $value;
}
}
echo "unique values: " , implode(", ", $uniques) , "\n";
echo "duplicate values: " , implode(", ", $duplicates);
Выход:
unique values: raja, mahi
duplicate values: kani, yuvi
Чтобы получить уникальные значения из массива, используйте array_unique()
:
$array = array(1,2,1,5,10,5,10,7,9,1) ;
array_unique($array);
print_r(array_unique($array));
Выход:
Array
(
[0] => 1
[1] => 2
[3] => 5
[4] => 10
[7] => 7
[8] => 9
)
И чтобы получить дублированные значения в массиве использовать array_count_values()
:
$array = array(1,2,1,5,10,5,10,7,9,1) ;
print_r(array_count_values($array));
Выход:
Array
(
[1] => 3 // 1 is duplicated value as it occurrence is 3 times
[2] => 1
[5] => 2 // 5 is duplicated value as it occurrence is 3 times
[10] => 2 // 10 is duplicated value as it occurrence is 3 times
[7] => 1
[9] => 1
)
<?php
$arr1 = [1,1,2,3,4,5,6,3,1,3,5,3,20];
print_r(arr_unique($arr1)); // will print unique values
echo "<br>";
arr_count_val($arr1); // will print array with duplicate values
function arr_unique($arr) {
sort($arr);
$curr = $arr[0];
$uni_arr[] = $arr[0];
for($i=0; $i<count($arr);$i++){
if($curr != $arr[$i]) {
$uni_arr[] = $arr[$i];
$curr = $arr[$i];
}
}
return $uni_arr;
}
function arr_count_val($arr) {
$uni_array = arr_unique($arr1);
$count = 0;
foreach($uni_array as $n1) {
foreach($arr as $n1) {
if($n1 == $n2) {
$count++;
}
}
echo "$n1"." => "."$count"."<br>";
$count=0;
}
}
?>