foreach
로빈아빠
본문
PHP4(PHP3는 아니다)는 perl 등의 다른 언어가 제공하는 foreach 구조를 제공한다. 이 구조는 배열에 있어서 반복적인 작업을 하는데 유용하다. 이것에는 두가지 문법이 있는데, 두 번째 것은 첫 번째 것의 부분 확장이나 매우 유용하게 사용된다.
1
2 foreach(array_expression as $value) statement
3 foreach(array_expression as $key => $value) statement
4
첫 번째 모양은 array_expression 으로 주어진 배열에 대해 순환작업(loop)을 수행한다. 개개의 순환작업에서, 배열의 원소는 $value에 저장되고 내부 배열 포인터(internal array pointer)는 하나 전진하여 다음 작업시에 새로운 원소를ㄹ 가져오도록 한다.
두 번째 모양은 첫 번째와 동일한 작업을 하지만, $key에 해당 원소의 키값을 저장하게 된다.
foreach 문이 처음 수행될 때, 내부 배열 포인터(internal array pointer)는 자동적으로 배열의 첫번째 원소로 설정된다. 이말의 의미는 여러분이 foreach 문을 사용할 때 reset()을 미리 호출할 필요는 없다는 것이다.
따라서 아래의 두 개의 문장은 동일한 결과를 만든다는 것을 알 수 있을 것이다. :
1
2 reset ($arr);
3 while (list(, $value) = each ($arr)) {
4 echo "Value: $value<br>\n";
5 }
6
7 foreach ($arr as $value) {
8 echo "Value: $value<br>\n";
9 }
10
다음 두 개의 문장은 기능적으로 동일한 문장이다. :
1
2 reset ($arr);
3 while (list($key, $value) = each ($arr)) {
4 echo "Key: $key; Value: $value<br>\n";
5 }
6
7 foreach ($arr as $key => $value) {
8 echo "Key: $key; Value: $value<br>\n";
9 }
10
추가적으로 몇 개의 예제를 보자. :
1
2 /* foreach example 1: value only */
3
4 $a = array (1, 2, 3, 17);
5
6 foreach ($a as $v) {
7 print "Current value of \$a: $v.\n";
8 }
9
10 /* foreach example 2: value (with key printed for illustration) */
11
12 $a = array (1, 2, 3, 17);
13
14 $i = 0; /* for illustrative purposes only */
15
16 foreach($a as $v) {
17 print "\$a[$i] => $k.\n";
18 }
19
20 /* foreach example 3: key and value */
21
22 $a = array (
23 "one" => 1,
24 "two" => 2,
25 "three" => 3,
26 "seventeen" => 17
27 );
28
29 foreach($a as $k => $v) {
30 print "\$a[$k] => $v.\n";
31 }
32
출처 : http://qdata.co.kr/bo/bbs/board.php?bo_table=pht&wr_id=44
1
2 foreach(array_expression as $value) statement
3 foreach(array_expression as $key => $value) statement
4
첫 번째 모양은 array_expression 으로 주어진 배열에 대해 순환작업(loop)을 수행한다. 개개의 순환작업에서, 배열의 원소는 $value에 저장되고 내부 배열 포인터(internal array pointer)는 하나 전진하여 다음 작업시에 새로운 원소를ㄹ 가져오도록 한다.
두 번째 모양은 첫 번째와 동일한 작업을 하지만, $key에 해당 원소의 키값을 저장하게 된다.
foreach 문이 처음 수행될 때, 내부 배열 포인터(internal array pointer)는 자동적으로 배열의 첫번째 원소로 설정된다. 이말의 의미는 여러분이 foreach 문을 사용할 때 reset()을 미리 호출할 필요는 없다는 것이다.
따라서 아래의 두 개의 문장은 동일한 결과를 만든다는 것을 알 수 있을 것이다. :
1
2 reset ($arr);
3 while (list(, $value) = each ($arr)) {
4 echo "Value: $value<br>\n";
5 }
6
7 foreach ($arr as $value) {
8 echo "Value: $value<br>\n";
9 }
10
다음 두 개의 문장은 기능적으로 동일한 문장이다. :
1
2 reset ($arr);
3 while (list($key, $value) = each ($arr)) {
4 echo "Key: $key; Value: $value<br>\n";
5 }
6
7 foreach ($arr as $key => $value) {
8 echo "Key: $key; Value: $value<br>\n";
9 }
10
추가적으로 몇 개의 예제를 보자. :
1
2 /* foreach example 1: value only */
3
4 $a = array (1, 2, 3, 17);
5
6 foreach ($a as $v) {
7 print "Current value of \$a: $v.\n";
8 }
9
10 /* foreach example 2: value (with key printed for illustration) */
11
12 $a = array (1, 2, 3, 17);
13
14 $i = 0; /* for illustrative purposes only */
15
16 foreach($a as $v) {
17 print "\$a[$i] => $k.\n";
18 }
19
20 /* foreach example 3: key and value */
21
22 $a = array (
23 "one" => 1,
24 "two" => 2,
25 "three" => 3,
26 "seventeen" => 17
27 );
28
29 foreach($a as $k => $v) {
30 print "\$a[$k] => $v.\n";
31 }
32
출처 : http://qdata.co.kr/bo/bbs/board.php?bo_table=pht&wr_id=44
관련링크
댓글목록
등록된 댓글이 없습니다.