PHP가 배열의 차원 수를 결정하는 방법: 1. 함수는 자신을 재귀적으로 호출하여 배열의 차원을 결정하고 "foreach()" 함수를 사용하여 모든 요소를 반복합니다. 2. "json_encode()" 함수를 통해 배열을 JSON 문자열로 변환한 후 정규 표현식을 사용하여 JSON 문자열의 계층적 깊이를 결정하는 방식으로 구현됩니다.
이 튜토리얼의 운영 체제: windows10 시스템, PHP 버전 8.1.3, DELL G3 컴퓨터.
배열의 차원 수를 결정하는 방법:
방법 1: 재귀를 사용하여 배열 크기 결정
아래 예제 코드의 함수는 루프를 반복한 후 자신을 호출하여 배열의 차원을 결정합니다. 모든 요소는 여전히 하나의 배열이므로 차원을 1만큼 늘립니다.
/** * 判断数组维度 * * @param array $arr * @return int */ function array_dimension($arr) { $dimension = 0; if (is_array($arr)) { foreach ($arr as $item) { if (is_array($item)) { $sub_dimension = array_dimension($item); if ($sub_dimension > $dimension) { $dimension = $sub_dimension; } } } $dimension++; } return $dimension; } // 示例数据 $arr1 = array(1, 2, 3); $arr2 = array(array(1, 2), array(3, 4)); $arr3 = array(array(array(1, 2), array(3, 4)), array(array(5, 6), array(7, 8))); echo '数组1的维度:' . array_dimension($arr1) . '<br>'; echo '数组2的维度:' . array_dimension($arr2) . '<br>'; echo '数组3的维度:' . array_dimension($arr3) . '<br>';
위 코드 출력 결과:
数组1的维度:1 数组2的维度:2 数组3的维度:3
방법 2: JSON 형식으로 변환하여 배열 크기 결정
아래 예제 코드의 함수는 배열을 JSON 문자열로 변환한 다음 JSON의 계층적 깊이를 결정합니다. 정규식을 통해 문자열을 구현했습니다.
/** * 判断数组维度 * * @param array $arr * @return int */ function array_dimension($arr) { $json_arr = json_encode($arr, JSON_UNESCAPED_UNICODE); $max_depth = 1; if (preg_match_all('/(?:^|\{|\,)\s*(\[(?R)*\]|\{(?R)*\})\s*(?:(?=\:)|$)/', $json_arr, $m)) { foreach ($m[1] as $val) { $depth = substr_count(str_replace(["[", "{", "]", "}"], "", $val), ',') + 1; if ($depth > $max_depth) { $max_depth = $depth; } } } return $max_depth; } // 示例数据 $arr1 = array(1, 2, 3); $arr2 = array(array(1, 2), array(3, 4)); $arr3 = array(array(array(1, 2), array(3, 4)), array(array(5, 6), array(7, 8))); echo '数组1的维度:' . array_dimension($arr1) . '<br>'; echo '数组2的维度:' . array_dimension($arr2) . '<br>'; echo '数组3的维度:' . array_dimension($arr3) . '<br>';
위 코드 출력 결과:
数组1的维度:1 数组2的维度:2 数组3的维度:3
위는 배열 크기를 결정하는 데 일반적으로 사용되는 두 가지 방법으로 구현하기가 비교적 간단합니다. 필요에 따라 적절한 방법을 선택할 수 있습니다.
위 내용은 PHP에서 배열의 차원 수를 확인하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!