php 다차원 배열의 빈자리?

매출이 오르면 내리는 수수료! 지금 수수료센터에서 전자결제(PG)수수료 비교견적 신청해 보세요!
php 다차원 배열의 빈자리?

QA

php 다차원 배열의 빈자리?

본문

2차원 배열을 사용하려고 합니다.

그런데 이 배열에 들어 가는 값이 $i=1,2,3... 으로 차례대로 들어가지 않고 중간중간 건너 뛸때 문제될게 있을까요?

 

예를들어 학생명단을 배열로 만들어 학번, 성멸, 이름을 배열에 저장한다고 할때,  첫번째 배열요소 번호를 학번으로 사용하려고 합니다.

즉 학번,성별,이름을 저장한다고 할때 첫번째 요소번호를 학번으로 사용하려고 합니다.

 

$arr = array();

$arr[3][0] = '남';

$arr[3][1] = '홍길동';

$arr[5][0] = '여';

$arr[5][1] = '황진이';

$arr[115][0] = '여';

$arr[115][1] = '임꺽정';

 

위와 같이 저장하면 $arr[0][0]~$arr[2][1] 은 안쓰는 것이 되잖아요.

또 $arr[6][0]~$arr[114][1] 도 안쓰구요.

 

이렇게 중간에 건너 뛰어도 작동은 하는것 같은데 무슨 문제가 있을까요?

물론 이렇게 만들면 for 반복문을 사용하기 힘들다는 문제는 있을 겁니다.

그런데 그것 외에 또 문제가 있을것이 있을까요?

건너 뛴 자리도 메모리를 다 차지할까요?

그리고 위와 같이 건너뛴 배열순번에 for 나 while 문으로 순차적으로 하나씩 접근하는 방법도 있을까요?

 

꼭 이렇게 한다는게 아니고 3차원배열을 써야 할 상황인데, 이렇게 하면 2차원배열로 될것 같아서 궁금해서 묻습니다.

이 질문에 댓글 쓰기 :

답변 2

상관없습니다.

배열의 인덱스가 숫자던 문자열이던 문제 없죠.

그렇다면 배열이 숫자건 문자건 사용자가 지정한것이니 3 인덱스 다음에 꼭 4가 필요한것도 아닙니다.

메모리를 1,2,3,4,5,6,7,.. 등등으로 선점하지 않아요. 선언된 배열만 메모리에 들어가게 됩니다.

 

단순한 순차증가형 인덱싱을 가진 배열이라면 for 로 하던 뭐로하던 상관없지만

그게아니라면 foreach 를 통해서 돌리는게 더 낫지요.

 

숫자로 순차인덱싱된 배열이라도 배열의 총 count 를 얻어서 for 를 돌린후

존재하지 않는 배열의 인덱스 번호만 체크해주면 나중에 채우는것도 문제가 없을것같습니다.

 

$arr = array_values($arr);

 

위 코드 실행하면 배열이 순서대로 정리됩니다. 빈값은 제거되구요.

답변을 작성하시기 전에 로그인 해주세요.
전체 21
QA 내용 검색

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT