> 백엔드 개발 > PHP 문제 > PHP에서 배열의 크기를 결정하는 방법

PHP에서 배열의 크기를 결정하는 방법

PHPz
풀어 주다: 2023-04-27 09:20:23
원래의
1129명이 탐색했습니다.

Array는 PHP에서 가장 일반적인 데이터 유형 중 하나입니다. 어레이를 통해 특정 방식으로 데이터 세트를 결합하여 데이터 운영 및 관리를 용이하게 할 수 있습니다. 배열의 차원은 배열을 분류하고 설명하는 방법입니다.

PHP에서는 배열 요소의 중첩 구조를 기반으로 배열의 크기가 설명됩니다. 배열에 단일 요소만 포함된 경우 배열의 차원은 1입니다. 예:

$arr = array(1, 2, 3, 4);
echo count($arr); // 输出 4
로그인 후 복사

위 배열에는 단일 요소만 포함되어 있으므로 차원은 1이고 배열의 길이는 4입니다.

배열에 다른 배열 요소가 포함된 경우 배열의 차원은 중첩된 배열을 포함하는 수준의 수가 됩니다. 예:

$arr2 = array(
    1, 
    array(
        2, 
        array(3, 4), 
        5
    ),
    6,
    array(7, 8)
);
echo count($arr2); // 输出 4
로그인 후 복사

위 배열에는 두 개의 중첩 배열이 포함되어 있으므로 차원은 2이고 배열 길이는 4입니다.

그럼 배열의 크기를 어떻게 결정하나요? 다음은 몇 가지 방법입니다.

1. 재귀를 사용하여 배열의 크기를 결정합니다.

재귀는 컴퓨터 과학에서 널리 사용되는 아이디어로, 다단계 중첩 데이터를 처리할 수 있습니다. 재귀를 사용하여 배열의 차원을 결정할 수 있습니다. 코드는 다음과 같습니다.

// 递归计算数组维度
function getDimension($arr)
{
    if (!is_array($arr)) {
        return 0;
    } else {
        $max = 0;
        foreach ($arr as $subArr) {
            $subArrDimension = getDimension($subArr);
            if ($subArrDimension > $max) {
                $max = $subArrDimension;
            }
        }
        return $max + 1;
    }
}
로그인 후 복사

위 함수 getDimension($arr)는 모든 배열을 허용하고 배열의 차원을 재귀적으로 계산할 수 있습니다. 그 중 is_array($arr)를 사용하여 요소가 배열 유형인지 여부를 확인하며, 배열 유형이 아닌 경우 요소의 크기가 0임을 나타내는 0을 반환합니다. 배열 유형인 경우 배열 요소를 반복하여 매번 하위 배열의 차원을 재귀적으로 계산하고 마지막으로 하위 배열에서 가장 큰 차원을 반환합니다. getDimension($arr) 可以接受任意一个数组,并通过递归的方式计算数组的维度。其中 is_array($arr) 用于判断该元素是否为数组类型,如果不是数组类型,则返回 0,表示该元素的维度为 0。 如果它是一个数组类型,则遍历该数组元素,每次递归计算它的子数组的维度,最终返回子数组中最大的维度。

2. 使用 foreach 嵌套判断数组的维度

实际上,我们也可以通过嵌套的 foreach 循环来判断数组的维度。如果一个数组的所有元素都不是数组类型,那它的维度为 1;如果它包含了数组类型的元素,则它的维度等于其中最内层子数组的维度加 1。代码如下:

// 使用 foreach 嵌套计算维度
function getDimension2($arr)
{
    if (!is_array($arr)) {
        return 0;
    } else {
        $depth = 1;
        foreach ($arr as $subArr) {
            if (is_array($subArr)) {
                $subArrDepth = getDimension2($subArr) + 1;
                if ($subArrDepth > $depth) {
                    $depth = $subArrDepth;
                }
            }
        }
        return $depth;
    }
}
로그인 후 복사

上述代码定义了函数 getDimension2($arr),它的计算方式与 getDimension($arr) 相同,只是使用了嵌套的 foreach 循环。其中,如果一个元素不是数组类型,则直接返回 0;如果它是数组类型,则遍历每一个元素,计算出最内层子数组的维度,然后将其加 1 即可。

3. 使用 array_filter 函数判断数组的维度

PHP 内置函数 array_filter() 可以用于过滤数组中不符合条件的元素,并根据过滤结果返回一个新的数组。我们可以利用它来判断数组的维度。代码如下:

// 使用 array_filter 函数计算维度
function getDimension3($arr)
{
    if (!is_array($arr)) {
        return 0;
    } else {
        $child = current($arr);
        $notEmpty = array_filter($arr);
        if (count($notEmpty) == 0) {
            return 1;
        } else {
            return is_array($child) ? getDimension3($child) + 1 : 1;
        }
    }
}
로그인 후 복사

上述代码定义了函数 getDimension3($arr),它利用了 array_filter() 函数。其中,使用 current($arr) 取出数组中的第一个元素,判断该元素是否为数组类型。如果它不是数组类型,则说明该数组的维度为 1;如果它是数组类型,则使用 array_filter($arr) 把该数组中所有的空元素过滤掉,并根据返回的新数组的长度来判断该数组的维度。

4. 使用 str_repeat 函数判断数组的维度

还有一种简单的方法是通过字符串长度的变化来判断数组的维度,这里我们使用 str_repeat 函数。具体实现如下:

// 使用 str_repeat 函数计算维度
function getDimension4($arr)
{
    $temp = $arr;
    $i = 0;
    while (is_array($temp)) {
        $temp = current($temp);
        $i++;
        $str = str_repeat('.', $i);
        echo '<pre class="brush:php;toolbar:false">'.$str.implode($str, $temp).'
';     }     return $i; }
로그인 후 복사

上述代码定义了函数 getDimension4($arr),它利用了 PHP 中的 current() 函数和 str_repeat()

2. 중첩된 foreach를 사용하여 배열의 크기를 결정합니다

실제로 중첩된 foreach 루프를 통해 배열의 크기를 결정할 수도 있습니다. 배열의 모든 요소가 배열 유형이 아닌 경우 해당 차원은 1입니다. 배열 유형의 요소가 포함된 경우 해당 차원은 가장 안쪽 하위 배열의 차원에 1을 더한 것과 같습니다. 코드는 다음과 같습니다. 🎜rrreee🎜위 코드는 getDimension2($arr) 함수를 정의하며, 계산 방법은 getDimension($arr)과 동일하지만, 중첩된 foreach 주기. 그 중 요소가 배열 유형이 아닌 경우에는 0을 직접 반환하고, 배열 유형인 경우에는 각 요소를 순회하여 가장 안쪽 하위 배열의 차원을 계산한 후 1을 더합니다. 🎜🎜3. array_filter 함수를 사용하여 배열의 크기를 결정합니다. 🎜🎜PHP 내장 함수 array_filter()를 사용하여 조건을 충족하지 않는 배열 요소를 필터링하고 필터링 결과를 기반으로 새 배열. 이를 사용하여 배열의 크기를 결정할 수 있습니다. 코드는 다음과 같습니다. 🎜rrreee🎜위 코드는 array_filter() 함수를 사용하는 getDimension3($arr) 함수를 정의합니다. 그 중 current($arr)를 사용하여 배열의 첫 번째 요소를 꺼내고 해당 요소가 배열 유형인지 확인합니다. 배열 유형이 아닌 경우 배열의 차원이 1임을 의미합니다. 배열 유형인 경우 array_filter($arr)를 사용하여 배열의 모든 빈 요소를 필터링합니다. 반환된 값에 따라 새 배열의 길이는 배열의 크기를 결정하는 데 사용됩니다. 🎜🎜4. str_repeat 함수를 사용하여 배열의 크기를 결정합니다. 🎜🎜또 다른 간단한 방법은 문자열 길이의 변화를 통해 배열의 크기를 결정하는 것입니다. 구체적인 구현은 다음과 같습니다. 🎜rrreee🎜위 코드는 current() 함수와 str_repeat()를 사용하는 <code>getDimension4($arr) 함수를 정의합니다. 함수. 함수 내부의 while 루프를 사용하여 배열의 중첩된 하위 배열을 계속 순회하고, 순회할 때마다 공백 문자열을 인쇄하고, 마지막으로 i 값을 반환합니다. 🎜🎜위는 배열의 크기를 결정하는 여러 가지 방법이며, 그 중 재귀 및 foreach 구현 방법이 더 일반적으로 사용됩니다. 개발자는 실제 상황에 따라 다양한 방법을 사용하여 구현하도록 선택할 수 있습니다. 🎜

위 내용은 PHP에서 배열의 크기를 결정하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿