나는 포인트 배열이나 포인트 배열 (2 차원 또는 3 차원 배열)을 받아 들여야하는 함수를 가지고있다. 나는 그것이 2 또는 3 레벨을 가지고 있는지 여부를 감지하는 신뢰할 수있는 방법을 찾고 있습니다. 문제는 내가 검사를 수행 할 배열의 키를 믿을 수 없다, 그래서이 늘 일 :배열의 레벨 양을 올바르게 계산하는 방법은 무엇입니까?
$levels = isset($array[0][0]) && is_array($array[0][0]) ? 3 : 2;
가 첫 번째 키는 보통 0에게 그것을하지 않을 수 ..as,하지만 난 돈 이것에 의존하고 싶지 않습니다. 그리고 어쨌든, 그렇게 하기엔 진절머리 나게 생각합니다. 최적으로, 의 수를 확인하고 싶습니다.은 전체 배열을 반복해야합니다.
array(5) {
[2] => array(2) {
[x] => 3
[y] => 6
}
[3] => array(2) {
[x] => 4
[y] => 8
}
...
그리고 세 가지 차원 배열이 배열을 포함합니다 :
다음은 배열이 어떻게 보이는지입니다.
일부 노트 :
- 배열이 큰, 그래서 완전히 배열을 통해 반복하는 마지막 레벨의 예외와
- 배열이 수치 순차적으로 색인 아주 좋은 옵션 (하지 않은 이 쓰는 동안
- 배열 키 또는 0
부터 시작되지 않을 수 X와 Y)이, I는 실현 될 수있는 해결책을 온; 있는 경우 배열의 첫 번째 항목을 검사하고 새로 발견 된 배열 등에서 자체를 호출하는 재귀 함수입니다.
더 좋고 깨끗한 아이디어가 있습니까? 스칼라 값과 배열을 모두 가질 수있는 배열을 지원하기위한 보너스 포인트 (예 : 배열의 첫 번째 항목은 문자열이지만 다음은 배열 일 수 있음).
PHP 배열은 실제로 배열이 아니라 트리로 구현되므로 배열에 얼마나 많은 "레벨"이 있는지 알지 못하므로 다른 방법은 없다고 생각합니다. –