답변:
array_count_values 함수를 사용할 수 있습니다.
$array = array('apple', 'orange', 'pear', 'banana', 'apple',
'pear', 'kiwi', 'kiwi', 'kiwi');
print_r(array_count_values($array));
출력됩니다
Array
(
[apple] => 2
[orange] => 1
[pear] => 2
etc...
)
if(count(array_unique($array))<count($array))
{
// Array has duplicates
}
else
{
// Array does not have duplicates
}
array_unique($array, SORT_REGULAR)
PHP가 유형을 변경하지 않고 정상적으로 요소를 확인하지만 느슨한 비교입니다. 따라서 동일한 콘텐츠를 가진 한 클래스의 다른 인스턴스는 고유하게됩니다.
function array_not_unique( $a = array() )
{
return array_diff_key( $a , array_unique( $a ) );
}
return array_values(array_unique(array_diff_key($a, array_unique($a))));
과일을 키로 사용하고 발생 횟수를 값으로 사용하여 해당 배열을 연관 배열로 전환 할 수 있습니다. 약간 장황하지만 다음과 같이 보입니다.
$array = array('apple', 'orange', 'pear', 'banana', 'apple',
'pear', 'kiwi', 'kiwi', 'kiwi');
$new_array = array();
foreach ($array as $key => $value) {
if(isset($new_array[$value]))
$new_array[$value] += 1;
else
$new_array[$value] = 1;
}
foreach ($new_array as $fruit => $n) {
echo $fruit;
if($n > 1)
echo "($n)";
echo "<br />";
}
array_count_values
아마도 이와 같은 것입니까 (예상되지 않은 코드이지만 아이디어를 제공해야 함)?
$new = array();
foreach ($array as $value)
{
if (isset($new[$value]))
$new[$value]++;
else
$new[$value] = 1;
}
그런 다음 값을 키로 사용하는 새 배열을 얻고 해당 값은 원래 배열에 존재 한 횟수입니다.
array_count_values
$count = 0;
$output ='';
$ischeckedvalueArray = array();
for ($i=0; $i < sizeof($array); $i++) {
$eachArrayValue = $array[$i];
if(! in_array($eachArrayValue, $ischeckedvalueArray)) {
for( $j=$i; $j < sizeof($array); $j++) {
if ($array[$j] === $eachArrayValue) {
$count++;
}
}
$ischeckedvalueArray[] = $eachArrayValue;
$output .= $eachArrayValue. " Repated ". $count."<br/>";
$count = 0;
}
}
echo $output;
제가 찾고있는 답을 찾지 못해서이 함수를 작성했습니다. 이것은 두 배열 사이의 중복 만 포함하는 배열을 만들지 만 요소가 중복 된 횟수를 인쇄하지 않으므로 질문에 직접 대답하지는 않지만 내 상황에있는 누군가에게 도움이되기를 바랍니다.
function findDuplicates($array1,$array2)
{
$combined = array_merge($array1,$array2);
$counted = array_count_values($combined);
$dupes = [];
$keys = array_keys($counted);
foreach ($keys as $key)
{
if ($counted[$key] > 1)
{$dupes[] = $key;}
}
sort($dupes);
return $dupes;
}
$array1 = [1,2,3,4,5];
$array2 = [4,5,6,7,8];
$dupes = findDuplicates($array1,$array2);
print_r($dupes);
출력 :
Array
(
[0] => 4
[1] => 5
)