주간 베스트 월간 베스트 3개월 베스트 베스트 게시물
꽃배달 한국, 중국 전지역배송

PHP 기초중의 기초 - (8) 배열

네로 | 2003.02.24 00:03:37 댓글: 0 조회: 676 추천: 5
분류웹 프로그래밍 https://life.moyiza.kr/itstudy/1758881
PHP 기초중의 기초 - (8) PHP 배열

글쓴이 : 悲魂(비혼), 2000/07/28(금)

본 강좌의 내용은 PHP를 전혀 모르는 분, 이제 막 PHP 공부를 시작하는 분들을 위한 말 그대로 기초 내용만을 다루고 있습니다. 때문에 PHP를 어느 정도 이상 다루는
분들에겐 가치없는 글일수도 있습니다. 본 강좌는 내용의 수정이 없다면 자유로운 배포 및 이용이 가능합니다. 다만 본 강좌의 내용 중 틀린 부분이나 추가 및 삭제를 원
하는 부분이 있을 시에는 비혼의 조그만 세상(http://soulstar.new21.org/)이나 흑협의 PHP Tip(http://phptip.com/)의 게시판에 글을 남겨주시면 고맙겠습니다.


PHP 기초중의 기초 강좌가 어느새 8회째에 접어들었습니다. 이제 조금 남았군요. 모두 기운내서 달려보죠.


1) 배열(Array)

순서를 가진 데이타 집합을 뜻합니다. 예제를 들어보는게 이해해 더 도움이 되겠죠?

<?php
//exam8-1.php
$name[0] = "제로";
$name[1] = "흑협";
$name[2] = "begood";
$name[3] = "yabaman";
$name[4] = "서누";
$name[5] = "비혼";
$name[6] = "켄신";

$member = count($name);
echo "등록된 사람은 모두 $member 명 입니다.
n";
for($i=0;$i<$member;$i++) {
echo "$name[$i]
n";
}
echo "
$name[5]의 조그만 세상n";
?>

위의 $name[번호] = "이름";으로 데이타를 저장했을때 아래처럼 순서대로 기억됩니다.


제로 흑협 begood yabaman 서누 비혼 켄신
[0] [1] [2] [3] [4] [5] [6]


count 함수는 위에서의 쓰임대로 배열의 크기를 구할때 많이 사용합니다. for문은 제어문을 다룰때 자세히 설명드리겠습니다. 위의 예제는 간단히 배열에 이름을 넣고,
총 몇개의 데이타가 들어갔는지 출력 후 배열에 저장되어 있는 이름을 출력하는 예제였습니다. 아래쪽에 콕 찝어 [5] 위치에 있는 비혼이란 데이타를 사용하였구요.

배열의 선언시 이처럼 저장될 위치를 직접 지정해서 저장할 수 있습니다. 그러나 일일히 저장될 위치를 지정하지 않아도 가능합니다. 위의 이름을 배열에 넣는 코드는 아
래처럼 간단히 바꿀 수 있습니다.

<?php
//exam8-2.php
$name[] = "제로";
$name[] = "흑협";
$name[] = "begood";
$name[] = "yabaman";
$name[] = "서누";
$name[] = "비혼";
$name[] = "켄신";

$member = count($name);
echo "등록된 사람은 모두 $member 명 입니다.
n";
for($i=0;$i<$member;$i++) {
echo "$name[$i]
n";
}
echo "
$name[5]의 조그만 세상n";
?>

그냥 []만 사용하면 이전에 저장된 위치 다음에 자동으로 데이타가 입력됩니다. 때문에 첫번째 제로 데이타를 넣을때 $name의 [0]번째 공간에 이름이 저장되고, 그 후
로 이 저장공간이 하나씩 증가하게 된거죠.

이것도 상당히 코드가 길어 타이핑하기 힘들죠? 이럴때 배열함수 array()를 사용하면 무척 편합니다. 이렇게 좋은걸 왜 이제야 쓰냐구요? 미안합니다~


<?php
//exam8-3.php
$name = array("제로", "흑협", "begood", "yabaman", "서누", "비혼", "켄신");
// 위를 array(0=>"제로", "흑협", "begood", "yabaman", "서누", "비혼", "켄신");처럼 써도 됩니다.
// 즉, 0번째 위치에서부터 차례대로 저장되게 지정하는 것입니다.

$member = count($name);
echo "등록된 사람은 모두 $member 명 입니다.
n";
for($i=0;$i<$member;$i++) {
echo "$name[$i]
n";
}
echo "
$name[5]의 조그만 세상n";
?>


지금까지의 예제 결과는 다음과 같습니다.


등록된 사람은 모두 7 명 입니다.
제로
흑협
begood
yabaman
서누
비혼
켄신
비혼의 조그만 세상


지금까지의 예제에서는 배열 첨자(index)를 정수로 나타내었습니다(indexed array). 때문에 for 문을 이용해 첨자 증가를 시켜 배열에 저장된 값을 불러올 수 있었습니
다.

이와 다르게 배열 첨자를 문자열로 나타낼 수 있습니다(associative array). 문자열 첨자 배열은 서로 다른 타입의 데이타를 이용할 때 효과적입니다. 문자열 첨자 배열
은 위의 예제에서처럼 첨자 증가를 할 수 없으므로 배열 조작 함수를 사용합니다. 먼저 예제를 올립니다.


<?php
//exam8-4.php
$dark["이름"] = "기태석";
$dark["주소"] = "서울특별시 강남구 삼성동";
$dark["직업"] = "프로그래머";
$dark["전화"] = "123-456-7890";

for(reset($dark); $index = key($dark); next($dark)) {
$temp = current($dark); // $temp = pos($dark)로도 쓸 수 있습니다.
echo "$index : $temp
n";
}
?>


이름, 주소, 직업, 전화번호등의 데이타를 입력하는 부분은 쉽습니다. 저런 형식으로 사용하면 되니까요. 그 아래에 보면 reset(), key(), next(), current() 등의 함수를 사
용했는데 이에 대한 이해만 있으면 될 것 같습니다.

reset()은 배열 포인터를 처음 값을 가리키도록 리셋하는 함수로 배열의 처음 값을 반환합니다.
key()는 현재 요소의 인덱스(key)를 반환합니다.
next()는 배열의 다음 포인터로 이동해 그 값을 반환합니다. 그리고 배열의 끝에서 false를 반환합니다.
current()는 배열의 내부 포인터를 통해 현재 지시하고 있는 값을 알 수 있는 함수입니다. 배열 생성시에 배열의 첫번째 값을 가리키고 있습니다.

이해가 가셨나요...? 아직 for문을 다루지 않아 바로 이해하는데는 어려움이 따르겠지만, 할 수 있습니다. 쉽습니다. 기운내세요.

결과 화면입니다.


이름 : 기태석
주소 : 서울특별시 강남구 삼성동
직업 : 프로그래머
전화 : 123-456-7890


이해가 잘 안가시면 유심히 살펴보세요. 앞으로 문자열 첨자 배열은 이렇게 사용하면 되겠구나 하고 말이에요. 눈치밥두 실력증진에 보탬이 됨을 또한번 적어봅니다.

만약 저장해야 할 자료가 많다면 어떻게 할까요? array를 쓰면 되잖아!라구 외치시 분~! 정답입니다. 위에서 잠깐 예를 들었었죠?

요일에 대한 배열을 지정해 보겠습니다. 앞으로 유용하게 써먹을 코드입니다. 눈을 크게 뜨고 봐주세요. 물론 직접 코딩하시는 것두 잊지 마시구요.


<?php
//exam8-5.php
$day = array(
1=>"월요일","화요일","수요일","목요일","금요일","토요일","일요일",
"월"=>"Monday", "화"=>"Tuesday", "수"=>"Wednesday","목"=>"Thursday","금"=>"Friday","토"=>"Saturday","일"=>"Sunday");

echo "일주일 중 가장 좋은 날은 $day[5] 입니다.
n";
echo "일주일 중 가장 나쁜 날은 $day[월] 입니다
n";
?>


배열 참조 연산자(=>)를 이제 어느 정도 이해 하셨나요? 긴 문자열의 경우 앞글자만 이용해 배열에 값을 저장하면 쉽게 불러쓸 수 있다는 점이 참 매력적이지 않아요? 결
과값은 다음과 같습니다.


일주일 중 가장 좋은 날은 금요일 입니다.
일주일 중 가장 나쁜 날은 월요일 입니다.


금요일날이 좋은 이유요? 잘 생각해 보세요. 이건 PHP와 관련은... 없습니다. ^^;


지금까지 다룬 배열은 1차원 배열이었습니다. 그럼 이제 다차원 배열은 []을 뒤에 더 붙이기만 하면 됩니다.

$name[] ... 1차원
$name[][] ... 2차원
$name[][][] ... 3차원
$name[][][]... ... 다차원


예제를 들어 다차원 배열(2차원 배열)을 알아보겠습니다.


<?php
//exam8-6.php
$name = array(
"제로팀"=>array("zero","흑협","서누","begood","yabaman"),
"비혼팀"=>array("비혼","켄신","커피","병팔","민혁"),
"기타팀"=>array("유수영","뚜꾸유진")
);

echo "<h2>제로팀을 소개합니다
n";
for($i=0;$i<count($name["제로팀"]);$i++)
echo $name["제로팀"][$i] . " ";

echo "<h2>비혼팀을 소개합니다
n";
for($i=0;$i<count($name["비혼팀"]);$i++)
echo $name["비혼팀"][$i] . " ";

echo "<h2>기타팀을 소개합니다
n";
for($i=0;$i<count($name["기타팀"]);$i++)
echo $name["기타팀"][$i] . " ";
?>


코드를 가만히 들여다 보세요. array 내에 또 array를 사용했죠? 문자열 첨자를 사용했고 해당 항목에 대해서 다시 zero,흑협,..., 비혼,켄신,..., 유수영,뚜꾸유진 등의 값
이 입력되었죠. for문은 아직 강좌를 진행하지 않았지만 대충 어떻게 사용하는지 감 잡으셨죠? for 문을 모르는 분들은 그냥 지금은 아~ 이렇게 쓰는거구나 정도만 이해하
고 for 문(제어문) 강좌를 기다려 주세요. 곧 옵니다... Coming Soon...

위의 예제에서 문자열 첨자를 사용했는데 정수형 첨자를 사용했다면 $name[0][0], $name[0][1]... 이런 식의 값 호출도 가능합니다. 웅. 예제 들어보라구요? 넵!

<?php
//exam8-7.php
$sung = array(1=>array(30,40,50),array(25,60,15),array(45,90,20));
echo "1반 : " . $sung[1][0] ." - ". $sung[1][1] ." - ". $sung[1][2] . "
" .
"2반 : " . $sung[2][0] ." - ". $sung[2][1] ." - ". $sung[2][2] . "
" .
"3반 : " . $sung[3][0] ." - ". $sung[3][1] ." - ". $sung[3][2];
?>

출력 결과를 예쁘게 얻기 위해 일부러 문자열 결합 연산자와 html
태그를 같이 사용했습니다. 결과는 다음과 같습니다. 이제 배열을 어느 정도 다룰 수 있게 되었나
요?


2) 마무리

쉽게 쓰지 못해 죄송합니다. 어려운 부분 있으면 알려주시세요. 최대한 쉽게 쓰도록 노력하겠습니다.
궁금한거 있음 댓글 달아주세요~

그럼 즐겁게 PHP~


----------------------------------------------------------------------
PHP 기초중의 기초 - (8) PHP 배열 : http://soulstar.new21.org/study/study8.htm
예제 확인 - http://soulstar.new21.org/study/exam8-1.php
예제 확인 - http://soulstar.new21.org/study/exam8-2.php
예제 확인 - http://soulstar.new21.org/study/exam8-3.php
예제 확인 - http://soulstar.new21.org/study/exam8-4.php
예제 확인 - http://soulstar.new21.org/study/exam8-5.php
예제 확인 - http://soulstar.new21.org/study/exam8-6.php
예제 확인 - http://soulstar.new21.org/study/exam8-7.php

* 전설님에 의해서 게시물 이동되었습니다 (2004-05-30 17:07)
* 이동한 이유 :
* 원래의 위치 : 웹 공부 >> 웹 프로그래밍
* 이동후 위치 : 웹 공부 >>

* 전설님에 의해서 게시물 이동되었습니다 (2004-05-30 17:12)
* 이동한 이유 :
* 원래의 위치 : 웹 공부 >>
* 이동후 위치 : 웹 공부 >> 웹 프로그래밍
추천 (5) 선물 (0명)
IP: ♡.27.♡.234
3,006 개의 글이 있습니다.
제목 글쓴이 날짜 조회
관리자
2003-09-20
11941
관리자
2003-09-20
11488
관리자
2003-09-20
20623
지구인
2010-08-27
19415
지구인
2009-09-07
13736
SOLIDH
2010-01-29
15693
엔죠라이프
2004-10-07
16786
네로
2003-02-24
629
네로
2003-02-24
562
네로
2003-02-24
1122
네로
2003-02-24
653
네로
2003-02-24
438
네로
2003-02-24
478
네로
2003-02-24
470
네로
2003-02-24
425
네로
2003-02-24
386
네로
2003-02-24
438
네로
2003-02-24
425
네로
2003-02-24
428
네로
2003-02-24
525
네로
2003-02-24
514
네로
2003-02-24
1442
네로
2003-02-24
718
네로
2003-02-24
568
네로
2003-02-24
538
네로
2003-02-24
676
네로
2003-02-24
628
네로
2003-02-24
489
모이자 모바일