php에서 array_count_values () 함수는 배열에서 각 값의 발생 수를 계산하는 매우 유용한 기능입니다. 함수는 다음과 같이 정의됩니다.
array_count_values(array $array): array
Array_Count_Values () 함수의 주요 함수는 원래 배열의 모든 값을 포함하는 연관 배열과 각 값이 나타나는 횟수를 반환하는 것입니다. 예를 들어:
$array = array(1, 2, 2, 3, 3, 3, 4);
$result = array_count_values($array);
print_r($result);
출력은 다음과 같습니다.
Array
(
[1] => 1
[2] => 2
[3] => 3
[4] => 1
)
엄격하게 말하면, array_count_values () 함수는 1 차원 배열 용으로 설계되었으므로 1 차원 배열에서 요소를 반복하고 각 값이 나타나는 횟수를 계산합니다. 1 차원 배열이 전달되면 예상대로 작동하여 카운트 결과를 반환 할 수 있습니다.
그러나 다차원 배열을 전달할 때 Array_Count_Values ()는 배열의 가장 바깥 쪽 (첫 번째 레이어) 요소 만 고려하고 내부 레이어에 중첩 된 배열을 무시합니다. 배열에 다차원 배열 또는 기타 복잡한 데이터 구조가 포함 된 경우 Array_Count_Values () 는 재귀 적으로 처리하지 않습니다.
예를 살펴 보겠습니다.
$array = array(
'a' => 1,
'b' => 2,
'c' => array(1, 2),
'd' => 3,
);
$result = array_count_values($array);
print_r($result);
출력은 다음과 같습니다.
Array
(
[1] => 1
[2] => 1
[3] => 1
)
보시다시피, array_count_values ()는 가장 바깥 쪽 요소 만 계산하고 키의 배열 값을 무시합니다. c . 다차원 배열에서 모든 값을 계산하려면 먼저 "평평한"경우 array_walk_recursive ()를 사용하거나 재귀를 통해 처리해야합니다.
다차원 배열에서 각 값의 발생 수를 계산 해야하는 경우 재귀 방법을 사용하여 배열을 평평하게 할 수 있습니다. 예는 다음과 같습니다.
function flattenArray($array) {
$result = [];
array_walk_recursive($array, function($value) use (&$result) {
$result[] = $value;
});
return $result;
}
$array = array(
'a' => 1,
'b' => 2,
'c' => array(1, 2),
'd' => 3,
);
$flattenedArray = flattenArray($array);
$result = array_count_values($flattenedArray);
print_r($result);
출력은 다음과 같습니다.
Array
(
[1] => 2
[2] => 2
[3] => 1
)
재귀 모드를 통해 다차원 배열을 평평하게 한 다음 array_count_values ()를 사용하여 계산합니다. 이를 통해 다차원 배열에서 모든 값을 계산할 수 있습니다.
Array_Count_Values () 함수 자체는 1 차원 배열에만 사용할 수 있습니다. 다차원 배열이 전달되면 함수는 가장 바깥 요소의 값 만 계산하고 중첩 배열의 값을 계산하지 않습니다. 다차원 배열을 처리하려면 먼저 재귀 적으로 또는 다른 방식으로 평평하게 배열 한 다음 Array_Count_Values ()를 사용하여 각 값의 발생 수를 계산할 수 있습니다.