PHP에서 1 차원 배열로 작업하고 있습니다. 중복 값의 존재를 감지하고 중복 값의 수를 세고 결과를 출력하고 싶습니다. 예를 들어 다음과 같은 배열이 있습니다.
$array = array('apple', 'orange', 'pear', 'banana', 'apple',
'pear', 'kiwi', 'kiwi', 'kiwi');
인쇄하고 싶습니다 :
apple (2)
orange
pear (2)
banana
kiwi (3)
이 문제에 접근하는 방법에 대한 조언이 있습니까?
감사.
마이크
답변
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
}
답변
function array_not_unique( $a = array() )
{
return 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_unique()
. 사용 여부를 감지 count(array_unique())
하고 count($array)
.
답변
에 물건을 map
(의사)
map[string -> int] $m
foreach($word in $array)
{
if(!$m.contains($word))
$m[$word] = 0;
$m[$word] += 1;
}
답변
아마도 이와 같은 것입니까 (예상되지 않은 코드이지만 아이디어를 제공해야 함)?
$new = array();
foreach ($array as $value)
{
if (isset($new[$value]))
$new[$value]++;
else
$new[$value] = 1;
}
그런 다음 값을 키로 사용하는 새 배열을 얻고 해당 값은 원래 배열에 존재 한 횟수입니다.