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

reset , foreach
작성자 : 13 김영철
등록날짜 : 2009.01.13 12:24
1,105

PHP 4(PHP 3는 아님)는 펄이나 다른 언어와 같이 foreach구문을 지원합니다. 이런 구문은 간단하게 배열에 대한 작업을 수행하는 가장 쉬운 기법입니다. foreach는 배열에서만 작동하고 다른 데이터형을 갖는 변수나 초기화되지 않은 변수에 대해서 이 구문을 사용하려한다면 에러 메시지를 만날것입니다. 이 구문은 두가지 문법이 있습니다; 두번째보다는 첫번째문법이 더 유용한 사용법입니다:

<PRE class=programlisting>foreach (array_expression as $value) statementforeach (array_expression as $key => $value) statement</PRE>

첫번째 형태는 array_expression에서 주어진 배열에 대해 루프를 돈다. 각 루프에서 현재 배열요소(element)의 값은 $value 로 지정되고 내부적인 배열 포인터는 하나씩 이동하게 된다 (그래서 다음 루프에서 다음 배열 요소를 보게 될것이다)

두번째 루프도 같은 일을 한다. 단 현재 배열요소의 키(key)값은 각 루프의 $key변수로 지정된다.

참고: foreach문이 처음 실행할때, 내부적인 배열 포인터는 자동적으로 배열의 첫번째 요소(element)로 리셋된다. 따라서 foreach절 이전에 reset()함수를 호출할 필요는 없다.

참고: foreach는 특정 배열의 복사본에 작용하는것이며 배열 자체를 직접 건드리지 않는다. 따라서, 배열 포인터는 each()함수 에 의해 변경이 되는것이 아니다. 넘어온 배열요소에 대한 변화는 원래 배열에는 영향을 주지 않는다. 하지만, 원래 배열의 내부적 포인터는 배열 처리에 의해 이동한다. foreach루프는 완료될때까지 루프를 돌고, 배열의 내부적 포인터는 배열 끝을 가리키게된다.

참고: foreach는 '@'를 사용해서 에러메시지를 출력하지 못하도록 할수는 없다.

다음 예는 기능적으로 동일하다는것을 알 필요가 있다:

<?php
$arr
= array("one", "two", "three"
);
reset ($arr
);
while (list(,
$value) = each ($arr
)) {
   echo
"Value: $value<br />\n"
;
}

foreach (
$arr as $value
) {
   echo
"Value: $value<br />\n"
;
}
?>

다음 예도 기능적으로 동일하다:

<?php
$arr
= array("one", "two", "three"
);
reset ($arr
);
while (list(
$key, $value) = each ($arr
)) {
   echo
"Key: $key; Value: $value<br />\n"
;
}

foreach (
$arr as $key => $value
) {
   echo
"Key: $key; Value: $value<br />\n"
;
}
?>

더 많은 예제 코드들이 사용법에 대해서 설명해준다:

<?php
/* foreach 예제 1: 값만 */

$a = array(1, 2, 3, 17
);

foreach (
$a as $v
) {
   echo
"\$a의 현재 값: $v.\n"
;
}

/* foreach 예제 2: 값 (키는 가상으로 출력) */

$a = array(1, 2, 3, 17
);

$i = 0;
/* 가상 목적으로만 사용 */

foreach ($a as $v
) {
   echo
"\$a[$i] => $v.\n"
;
  
$i
++;
}

/* foreach 예제 3: 키와 값 */

$a
= array(
  
"one" => 1
,
  
"two" => 2
,
  
"three" => 3
,
  
"seventeen" =>
17
);

foreach (
$a as $k => $v
) {
   echo
"\$a[$k] => $v.\n"
;
}

/* foreach 예제 4: 다차원 배열 */

$a[0][0] = "a"
;
$a[0][1] = "b"
;
$a[1][0] = "y"
;
$a[1][1] = "z"
;

foreach (
$a as $v1
) {
   foreach (
$v1 as $v2
) {
       echo
"$v2\n"
;
   }
}

/* foreach 예제 5: 동적 배열 */

foreach (array(1, 2, 3, 4, 5) as $v
) {
   echo
"$v\n"
;
}

 

 

reset

(PHP 3, PHP 4 , PHP 5)

reset --  배열의 내부 포인터가 배열의 첫번째 원소를 가리키게 한다

설명

mixed reset ( array array)

reset()array의 내부 포인터를 첫번째 원소를 가리키도록 되감고 배열의 첫번째 원소의 값을 반환한다.

 

each

(PHP 3, PHP 4 , PHP 5)

each --  배열에서 현재의 키와 값 쌍을 반환하고 배열 커서를 전진시킨다

설명

array each ( array array)

array 배열에서 현재의 키와 값 쌍을 반환하고 배열 커서를 전진시킨다. 이 키/값 쌍은 4개 원소를 갖는 배열을 반환한다. 0, 1, key, value 이다. 원소 0key는 배열 원소의 키 이름을 포함하고, 1value는 데이터를 포함한다.

배열의 내부 포인터가 배열의 끝을 벗어나면, each()FALSE를 반환한다.

예 1. each() 예제코드

<?php
$foo
= array ("bob", "fred", "jussi", "jouni", "egon", "marliese"
);
$bar = each ($foo
);
print_r($bar
);
?>

$bar는 현재 다음과 같은 key/value 쌍을 포함한다:

<PRE class=screen>Array( [1] => bob [value] => bob [0] => 0 [key] => 0)</PRE>

<?php
$foo
= array ("Robert" => "Bob", "Seppo" => "Sepi"
);
$bar = each ($foo
);
print_r($bar
);
?>

$bar는 현재 다음과 같은 key/value 쌍을 포함한다:

<PRE class=screen>Array( [1] => Bob [value] => Bob [0] => Robert [key] => Robert)</PRE>

each()는 배열을 사용하기 위해 일반적으로 list()와 같이 사용한다. 예제코드는 다음과 같다:

예 2. each()로 배열 사용하기

<?php
$fruit
= array('a' => 'apple', 'b' => 'banana', 'c' => 'cranberry'
);

reset ($fruit
);
while (list (
$key, $val) = each ($fruit
)) {
   echo
"$key => $val\n"
;
}

/* Outputs:

a => apple
b => banana
c => cranberry

*/
?>

each()가 수행되면, 배열 커서는 배열의 다음 원소로 옮겨지거나, 배열의 끝인 경우에는 마지막 원소를 통과한다. each를 사용하여 다시 배열을 사용하려면 reset()을 사용해야 한다.

경고

배열을 다른 변수로 지정하는 것은 원래의 배열 포인터를 초기화 하는것이기 때문에, 위 예제코드는 루프안에서 $fruit를 다른 변수로 지정하게 되면 무한 루프를 유발할수 있다. 


[출처] 웹디황용

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

Comments

번호 제목 글쓴이 날짜 조회
3285 URL Cache를 사용하여 웹을 더욱 빠르게 13 김영철 01.13 979
3284 php5 99 단국강토 01.02 1054
3283 php 세션css 99 단국강토 12.30 1065
3282 [hatelove님의 JBBS 알고리즘 강좌 9] 13 김영철 01.14 1069
열람중 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 1183
3275 [php] 내장함수 13 김영철 01.13 1188
3274 태그 허용 함수???? 이제 개념을 바꾸자 13 김영철 01.14 1205
3273 플래쉬 Panels 에 대한 기본개념들 99 단국강토 01.06 1212
3272 foreach 13 김영철 01.13 1213
3271 파일관련함수 13 김영철 01.13 1213
3270 [hatelove님의 JBBS 알고리즘 강좌 7] 13 김영철 01.14 1215
3269 PHP도 객체지향형 프로그램이다..!!(클래스,상속동...) 13 김영철 01.13 1215
3268 PHP입문 - 함수 13 김영철 01.13 1215
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 1224
3263 객체 정의하기[이론,예제] 99 단국강토 01.29 1229
3262 php 파일 업, 다운로드 13 김영철 01.13 1232
3261 역인덱스 게시판 | 13 김영철 01.14 1241
3260 파일업로드 썸네일 제작 class 13 김영철 01.13 1244
3259 초보자용 이것저것 몇가지 팁 13 김영철 01.14 1246
3258 간단 날짜계산 99 단국강토 02.16 1249
3257 window 객체 M 최고의하루 12.20 1249
3256 디렉토리 폴더 모든파일 표시 [php] 13 김영철 01.14 1250
마케팅
특별 마케팅자료
다운로드 마케팅자료
창업,경영
기획,카피,상품전략
동기부여,성취