강의 컨설팅 트레이닝 무료진단 무료책자 마케팅편지 마케팅정보공유 다이어리 서비스제휴 고객센터

foreach
작성자 : 13 김영철
등록날짜 : 2009.01.13 15:14
1,213

제목 : PHP 내공올리기 강좌 1 : foreach 사용법
글쓴넘 : 위경섭
저작권 : 위경섭
 
이 글은 글쓴넘과 저작권을 표시하여 배포 가능함다 !!!
--
 
foreach 사용법
 
우선 foreach 문법의 prototype 을 보자
 
1. foreach (array_expression as $value) statement

첫번째 사용법은 배열의 첨자를 무시하고 값만을 사용하고 싶을때 사용한다.
 
이런배열이 있다고 가정해 보자
 
$my_arr[0] = "apple";
$my_arr[5] = "orange";
$my_arr[15] = "pineapple";
 
이 배열을 출력하는 일반적인 for 문을 구성해보자.
 
for($i=0;$i<=15;$i++)
{
    if( $my_arr[$i] != "") echo $my_arr[$i];
}
 
세개의 내용을 표시하기위해 15번의 루프를 돈다. 이걸 foreach 로 바꿔보자.
 
foreach($my_arr as $fruit)
{
    echo $fruit;
}
 
이 문장은 세개의 과일을 표시하기위해 정확히 세번만 돈다..
 
2. foreach (array_expression as $key => $value) statement
 
이제 좀더 파워풀한 두번째 사용법을 보자.
 
위의 예를 그대로 써서...
 
foreach($my_arr as $idx => $fruit)
{
    echo "INDEX : $idx, fruit : $fruit";
}
 
두번째의 경우는 PHP에 존재하는(다른언어에도 있을랑가 모르겠지만...) 문자열첨자르 사용할 경우 아주 유용하다.
 
// 설정값 저장용 배열
$my_cnf["version"] = "1.5";
$my_cnf["appname"] = "My Application";
$my_cnf["Author"] = "위경섭";
 
foreach($my_cnf as $keyName => $value)
{
    echo "$keyName = $value";
}
 
이제 아주 유용한 실전 예제를 한번 만들어보자..
 
문)
내가 호스팅받는 계정이 보안상의 이유로 PHP register global 을 off 해놨다.
그래서 내가만든게시판의 action 파일에 있는 $subject 등을 $_POST["subject"] 로 바꿔서
써야한다. 근데 이게 일이 넘 많다!.. 이걸 일일이 안바꾸고 해결할 방법이 있겠는가 ?
 
답)
일단 $_POST 의 특성을 보자...
 
$_POST 는 웹페이지에서 <form method=post ...> 했을때 폼태그 내에있는 양식(input,select 등등) 의 값이 넘어오는 배열이다. PHP의 register global 이 on 되어있으면 PHP가 자동으로 해당변수의 이름으로 매핑해준다. 하지만 off 이면 $_POST["name속성명"] 으로 참조해야한다.
 
그다음 PHP의 참조변수 기능을보자.
 
$fruit = "apple";
$apple = "이것은 사과";
echo $$fruit; // "이것은 사과" 를 출력함..
 
변수명을 문자열로 사용할 수 있다..즉
$apple === $$fruit 인 것이다..
 
이제 $_POST 배열안의 각변수들을 실제 변수로 만들어보자
 
foreach($_POST as $key => $value)
{
    $$key = $value;
}
 
끝났다...이제 register global=off 상태에서도 내가 폼을 통해넘긴 변수를 register global on 일때 처럼 사용할 수 있다.
 
$$key = $value;
 
$key 에는 $_POST 배열의 첨자가 온다.
 
$_POST["subject"] = "나의 게시물";
 
여기서 "subject" 가 $key 에 "나의 게시물" 이 $value 에 들어간다.
 
위에서 설명한 변수참조 기능에서
$$key -->  $"subject" 가 되고($subject 변수가 생성된다) 여기에 $value를 넣으므로
 
$subject = $value;
 
이런 결과가 되어
 
$_POST["subject"] = "나의 게시물";
 
이 문장에서 아래의 문장이 실행된다.
 
$subject = "나의 게시물";
 
이렇게 해서 폼에서 넘긴 name=subject 폼이 $subject 로 사용가능하게 된다.

"쇼핑몰·홈페이지·오픈마켓
블로그·페이스북·이메일 등의 각종 마케팅 글쓰기,
각종 광고, 영업, 판매, 제안서, 전단지
반응율 3배×10배 이상 높이는 마법의 8단계 공식"
자세히보기

Comments

번호 제목 글쓴이 날짜 조회
3285 URL Cache를 사용하여 웹을 더욱 빠르게 13 김영철 01.13 980
3284 php5 99 단국강토 01.02 1054
3283 php 세션css 99 단국강토 12.30 1066
3282 [hatelove님의 JBBS 알고리즘 강좌 9] 13 김영철 01.14 1069
3281 reset , foreach 13 김영철 01.13 1106
3280 png 99 단국강토 12.30 1120
3279 플래시로 만든 php 함수 사전 13 김영철 01.13 1162
3278 PHP강좌】PHP URL함수 13 김영철 01.13 1166
3277 foreach 와 배열 13 김영철 01.14 1172
3276 주화면의 최신글을 preload로 빠르게 13 김영철 01.13 1184
3275 [php] 내장함수 13 김영철 01.13 1189
3274 태그 허용 함수???? 이제 개념을 바꾸자 13 김영철 01.14 1206
3273 플래쉬 Panels 에 대한 기본개념들 99 단국강토 01.06 1212
3272 파일관련함수 13 김영철 01.13 1213
열람중 foreach 13 김영철 01.13 1214
3270 [hatelove님의 JBBS 알고리즘 강좌 7] 13 김영철 01.14 1216
3269 PHP도 객체지향형 프로그램이다..!!(클래스,상속동...) 13 김영철 01.13 1216
3268 PHP입문 - 함수 13 김영철 01.13 1216
3267 플래시에서 pc cam 영상보여주기 99 단국강토 02.16 1218
3266 php기본함수 정리!! 13 김영철 01.13 1219
3265 시스템콜인 open 계열 함수와 스트림기반의 fopen 계열.. 13 김영철 01.13 1221
3264 소스를 간편하게 만들어 주는 with문 99 단국강토 02.10 1225
3263 객체 정의하기[이론,예제] 99 단국강토 01.29 1229
3262 php 파일 업, 다운로드 13 김영철 01.13 1232
3261 역인덱스 게시판 | 13 김영철 01.14 1242
3260 파일업로드 썸네일 제작 class 13 김영철 01.13 1245
3259 초보자용 이것저것 몇가지 팁 13 김영철 01.14 1246
3258 간단 날짜계산 99 단국강토 02.16 1249
3257 window 객체 M 최고의하루 12.20 1249
3256 디렉토리 폴더 모든파일 표시 [php] 13 김영철 01.14 1250
마케팅
특별 마케팅자료
다운로드 마케팅자료
창업,경영
기획,카피,상품전략
동기부여,성취