현재 위치: > 최신 기사 목록> array_count_values ​​() 매개 변수는 1 차원 배열이어야합니까?

array_count_values ​​() 매개 변수는 1 차원 배열이어야합니까?

M66 2025-06-07

php에서 array_count_values ​​() 함수는 배열에서 각 값의 발생 수를 계산하는 매우 유용한 기능입니다. 함수는 다음과 같이 정의됩니다.

 array_count_values(array $array): array

1. array_count_values ​​() 함수 소개

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
)

2. Array_Count_Values ​​()는 1 차원 배열에만 사용할 수 있습니까?

엄격하게 말하면, array_count_values ​​() 함수는 1 차원 배열 용으로 설계되었으므로 1 차원 배열에서 요소를 반복하고 각 값이 나타나는 횟수를 계산합니다. 1 차원 배열이 전달되면 예상대로 작동하여 카운트 결과를 반환 할 수 있습니다.

그러나 다차원 배열을 전달할 때 Array_Count_Values ​​()는 배열의 가장 바깥 쪽 (첫 번째 레이어) 요소 만 고려하고 내부 레이어에 중첩 된 배열을 무시합니다. 배열에 다차원 배열 또는 기타 복잡한 데이터 구조가 포함 된 경우 Array_Count_Values ​​() 는 재귀 적으로 처리하지 않습니다.

3. 다차원 배열을 통과하면 어떻게됩니까?

예를 살펴 보겠습니다.

 $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 ()를 사용하거나 재귀를 통해 처리해야합니다.

4. 다차원 배열의 계산 문제를 해결하십시오

다차원 배열에서 각 값의 발생 수를 계산 해야하는 경우 재귀 방법을 사용하여 배열을 평평하게 할 수 있습니다. 예는 다음과 같습니다.

 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 ​​()를 사용하여 각 값의 발생 수를 계산할 수 있습니다.