티스토리 뷰
배열 원소 순회, foreach()
foreach() 함수는 배열의 각 원소마다 코드 블록을 한 번씩 수행한다.
$meal = array('breakfast' => '호두 번',
'lunch' => '캐슈너트와 양송이버섯',
'snack' => '말린 오디',
'dinner' => '칠리 소스 가지 볶음');
print "<table>\n";
foreach ($meal as $key => $value) {
print "<tr><td>$key</td><td>$value</td></tr>\n";
}
print'</table>';
foreach()는 $meal 배열의 각 원소에 대해 $key 변수에 키를, $value 변수에 값을 복사한 뒤 중괄호 내부의 코드를 실행한다. 키와 원소의 값을 담을 변수의 이름은 마음대로 정할 수 있다.
하지만, froeach() 구문 이전에 사용했던 변수명을 그대로 사용하면 원래 변수의 값은 덮어씌워진다.
$row_styles = array('even', 'odd');
$style_index = 0;
$meal = array('breakfast' => '호두 번',
'lunch' => '캐슈너트와 양송이버섯',
'snack' => '말린 오디',
'dinner' => '칠리 소스 가지 볶음');
print "<table>\n";
foreach ($meal as $key => $value) {
print '<tr class="' . $row_styles[$style_index] . '">';
print "<td>$key</td><td>$value</td></tr>\n";
//style_index 변수에 0과 1을 번갈아 지정한다.
$style_index = 1 - $style_index;
}
print '</table>';
/* 출력 결과
<table>
<tr class="even"><td>breakfast</td><td>호두번</td></tr>
<tr class="odd"><td>lunch</td><td>캐슈너트와 양송이버섯</td></tr>
<tr class="even"><td>snack</td><td>말린 오디</td></tr>
<tr class="odd"><td>dinner</td><td>칠리 소스 가지 볶음</td></tr>
</table>
foreach() 코드 블록 내부에서 $key나 $value 같은 루프 변수의 값이 바뀌어도 실제 배열의 원소에는 아무런 영향을 미치지 않는다. 만약 배열 원소의 값을 바꾸고자 한다면 $key 변수를 배열의 색인으로 활용해야 한다.
$meals = arry('walnut Bun' => 1,
'Cashew Nuts and White Mushrooms' => 4.95,
'Dried Mulberries' => 3.00,
'Eggplant with Chili Sauce' => 6.50);
foreach($meals as $dish => $price){
// $price = $price * 2 구문은 효과가 없다.
$meals[$dish] = $meals[$dish] * 2;
}
// 다시 한 번 배열을 순회하며 변경된 값을 출력한다.
foreach ($meals as $dish => $price) {
printf("%s 메뉴의 변경된 가격은 \$%.2f입니다. \n" ,$dish,$price);
}
/* 출력 결과
Walnut BUn 메뉴의 변경된 가격은 $2.00입니다.
Cashew Nuts and White Mushrooms 메뉴의 변경된 가격은 $9.90입니다.
Dried Mulberries 메뉴의 변경된 가격은 $6.00입니다.
Eggplant with Chili Sauce 메뉴의 변경된 가격은 $13.00입니다.
foreach()에서 숫자 키 배열을 사용할 때는 아래 처럼 축약된 형식으로 쓸 수 있다.
$dinner = array('스위트콘과 아스파라거스',
'레몬 치킨',
'삶은 망태버섯');
foreach ($dinner as $dish) {
print "주문 가능 메뉴: $dish\n";
}
/* 출력 결과
주문 가능 메뉴: 스위트콘과 아스파라거스
주문 가능 메뉴: 레몬 치킨
주문 가능 메뉴: 삶은 망태버섯
foreach() 형식에서 as 다음에 변수를 하나만 지정하면 해당 변수에는 각 배열 원소의 값이 복사되어 코드 블록 내부에서 사용할 수 있다. 그러나 이 경우에는 코드 블록 내부에서 배열 원소의 키에 접근할 수 없다.
foreach()가 진행되는 동안 현재 배열 원소의 위치를 파악하기 위해서는 코드 블록이 반복될 때마다 값이 증가하는 변수를 별도로 둬야한다.
'PHP' 카테고리의 다른 글
PHP array_key_exists(), in_array(),array_search() (0) | 2021.04.02 |
---|---|
배열 원소 순회, for() (0) | 2021.04.02 |
PHP count() 함수 (0) | 2021.04.02 |
PHP 배열변수에 스칼라값 할당하면 (0) | 2021.04.02 |
PHP 배열 문법 모양 (0) | 2021.03.31 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- PHP이스케이프
- PHP마침표
- PHP작은따옴표
- htmlTag
- C언어프로세스
- PHP"'
- C언어다차원포인터
- PHP큰따옴표
- HTML태그사용법
- PHPescaping
- 이미지무료다운로드사이트
- 무효트래픽이의신청
- C언어정적메모리할당
- html이미지넣기
- PHPescapecharacter
- HTMLtag사용법
- C언어malloc
- PHPhere문서
- C언어동적메모리할당
- PHP문자열연결연산자
- PHP'"
- HTMLbestTag
- C언어malloc함수
- PHP작은따옴표역할
- PHP큰따옴표작은따옴표차이점
- 무효클릭신고양식
- html이미지
- PHP'
- PHP이스케이핑
- C언어2차원포인터
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
글 보관함