데이터 집합 - 배열다루기
-배열의 구성요소: 원소, 키, 값
-배열을 정의하는 두가지 방법: array() 와 단축문법
-대괄호로 배열에 원소 추가하기
-숫자 키 배열에 쓸 수 있는 단축 표현
-배열의 원소 개수 구하기
- foreach()로 배열의 각 원소 확인하기
- foreach()와 클래스명 배열을 이용해 테이블 행의 css 클래스명 번갈아 적용하기
-foreach() 코드 불록 내부에서 배열 원소의 값 수정하기
-for() 루프로 숫자 키 배열의 각 원소 확인하기
-for 와 나머지 연산자(%)를 이용해 테이블 행의 css 클래스명 번갈아 적용하기
-foreach()와 for()를 사용할 때 배열 원소를 확인하는 순서의 차이
-특정 키로 배열 원소 찾기
-특정 값으로 배열 원소 찾기
-문자열 내부에 배열 원소의 값 삽입하기
-배열 원소 제거하기
-implode()로 배열에서 문자열 생성하기
-explode()로 문자열에서 배열 생성하기
-sort(), asort(), ksort()로 배열 정렬하기
-역순으로 배열 정렬하기
-다차원 배열 정의하기
-다처원 배열의 원소에 개별적으로 접근하기
-foreach()와 for() 루프로 다차언 배열의 각 원소 확인하기
-문자열 내부에 다차원 배열 원소 삽입하기
-배열의 구성요소: 원소, 키, 값
-배열을 정의하는 두가지 방법: array() 와 단축문법
<?php
$vegetables = array('corn' => '노랑',
'beet' => '빨강',
'carrot' => '주황');
$dinner = array(0 => '스위트콘과 아스파라거스',
1 => '레몬 치킨',
2 => '삶은 망태버섯');
$computers = array('nintendo-64' => '닌텐도',
2600 => '아타리',
'Saturn' => '세가');
?>
<?php
$vegetables = ['corn' => '노랑', 'beet' => '빨강', 'carrot' => '주황'];
$dinner = [0 => '스위트콘과 아스파라거스',
1 => '레몬 치킨',
2 => '삶은 망태버섯'];
$computers = ['nintendo-64' => '닌텐도', 2600 => '아타리', 'Saturn' => '세가'];
-대괄호로 배열에 원소 추가하기
<?php
// 문자열 키를 사용하는 $vegetables 배열
$vegetables['corn'] = '노랑';
$vegetables['beet'] = '빨강';
$vegetables['carrot'] = '주황';
// 숫자 키를 사용하는 $dinner 배열
$dinner[0] = '스위트콘과 아스파라거스';
$dinner[1] = '레몬 치킨';
$dinner[2] = '삶은 망태버섯';
// 숫자 키와 문자열 키를 사용하는 $computers 배열
$computers['nintendo-64'] = '닌텐도';
$computers[2600] = '아타리';
$computers['Saturn'] = '세가';
-숫자 키 배열에 쓸 수 있는 단축 표현
-배열의 원소 개수 구하기
<?php
$letters[0] = 'A';
$letters[1] = 'B';
$letters[3] = 'D';
$letters[2] = 'C';
for ($i = 0, $num_letters = count($letters); $i < $num_letters; $i++) {
print $letters[$i];
}
//ABCD
-implode()로 배열에서 문자열 생성하기
<?php
$letters = array('A','B','C','D');
print implode('',$letters);
//ABCD
<?php
$dimsum = array('닭고기 번','오리발 구이','순무 케이크');
$menu = implode(', ', $dimsum);
print $menu;
//닭고기 번, 오리발 구이, 순무 케이크
<?php
$dimsum = array('닭고기 번','오리발 구이','순무 케이크');
print '<tr><td>' . implode('</td><td>',$dimsum) . '</td></tr>';
//<tr><td>닭고기 번</td><td>오리발 구이</td><td>순무 케이크</td></tr>
-explode()로 문자열에서 배열 생성하기
<?php
$fish = '농어, 잉어, 꼬치고기, 가자미';
$fish_list = explode(', ', $fish);
print "두번째 물고기는 $fish_list[1]입니다.";
//두번째 물고기는 잉어입니다.
- foreach()로 배열의 각 원소 확인하기
1
<?php
$dinner = array('스위트콘과 아스파라거스',
'레몬 치킨',
'삶은 망태버섯');
foreach ($dinner as $dish) {
print "주문 가능 메뉴: $dish\n";
}
//주문 가능 메뉴: 스위트콘과 아스파라거스
//주문 가능 메뉴: 레몬 치킨
//주문 가능 메뉴: 삶은 망태버섯
2-foreach()와 for()를 사용할 때 배열 원소를 확인하는 순서의 차이
<?php
$letters[0] = 'A';
$letters[1] = 'B';
$letters[3] = 'D';
$letters[2] = 'C';
foreach ($letters as $letter) {
print $letter;
}
//foreach는 순서 그대로 출력
//결과 ABDC
- foreach()와 클래스명 배열을 이용해 테이블 행의 css 클래스명 번갈아 적용하기
-for 와 나머지 연산자(%)를 이용해 테이블 행의 css 클래스명 번갈아 적용하기
<?php
$row_styles = array('even','odd');
$dinner = array('스위트콘과 아스파라거스',
'레몬 치킨',
'삶은 망태버섯');
print "<table>\n";
for ($i = 0, $num_dishes = count($dinner); $i < $num_dishes; $i++) {
print '<tr class="' . $row_styles[$i % 2] . '">';
print "<td>원소 $i</td><td>$dinner[$i]</td></tr>\n";
}
print '</table>';
//결과
<table>
<tr class="even"><td>원소 0</td><td>스위트콘과 아스파라거스</td></tr>
<tr class="odd"><td>원소 1</td><td>레몬 치킨</td></tr>
<tr class="even"><td>원소 2</td><td>삶은 망태버섯</td></tr>
</table>
-foreach() 코드 불록 내부에서 배열 원소의 값 수정하기
-특정 키로 배열 원소 찾기
-array_key_exists(키,배열) :해당 배열에 키값이 존재하는지 확인
<?php
$meals = array('Walnut Bun' => 1,
'Cashew Nuts and White Mushrooms' => 4.95,
'Dried Mulberries' => 3.00,
'Eggplant with Chili Sauce' => 6.50,
'Shrimp Puffs' => 0); // Shrimp Puffs 는 무료!
$books = array("이용객을 위한 A급 중국어 안내",
'중국의 요리 방식과 식사 문화');
// 다음 조건식은 참이다.
if (array_key_exists('Shrimp Puffs',$meals)) {
print "네, Shrimp Puffs 메뉴도 가능합니다.";
}
// 다음 조건식은 거짓이다.
if (array_key_exists('Steak Sandwich',$meals)) {
print "Steak Sandwich 메뉴도 있습니다.";
}
// 다음 조건식은 참이다.
if (array_key_exists(1, $books)) {
print "1번 원소는 중국의 요리 방식과 식사 문화입니다.";
}
결과:네, Shrimp Puffs 메뉴도 가능합니다.1번 원소는 중국의 요리 방식과 식사 문화입니다.
-특정 값으로 배열 원소 찾기
-in_array(값,배열); 해당배열에 해당 값이 있으면 참을 리턴
<?php
$meals = array('Walnut Bun' => 1,
'Cashew Nuts and White Mushrooms' => 4.95,
'Dried Mulberries' => 3.00,
'Eggplant with Chili Sauce' => 6.50,
'Shrimp Puffs' => 0);
$books = array("이용객을 위한 A급 중국어 안내 ",
'중국의 요리 방식과 식사 문화');
// Dried Mulberries 키의 값이 3.00이므로 이 조건은 참이다.
if (in_array(3, $meals)) {
print '가격이 $3인 메뉴가 있습니다.';
}
// 이 조건도 참이다.
if (in_array('중국의 요리 방식과 식사 문화', $books)) {
print "중국의 요리 방식과 식사 문화를 보실 수 있습니다.";
}
// in_array() 는 대소문자를 구별하므로 이 조건은 거짓이다.
if (in_array("이용객을 위한 a급 중국어 안내", $books)) {
print "이용객을 위한 A급 중국어 안내를 보실 수 있습니다.";
}
//결과:가격이 $3인 메뉴가 있습니다.중국의 요리 방식과 식사 문화를 보실 수 있습니다.
-for() 루프로 숫자 키 배열의 각 원소 확인하기
<?php
$dinner = array('스위트콘과 아스파라거스',
'레몬 치킨',
'삶은 망태버섯');
for ($i = 0, $num_dishes = count($dinner); $i < $num_dishes; $i++) {
print "메뉴 번호 $i: $dinner[$i]\n";
}
메뉴 번호 0: 스위트콘과 아스파라거스
메뉴 번호 1: 레몬 치킨
메뉴 번호 2: 삶은 망태버섯
-특정 값으로 배열 원소 찾기
-array_search(값,배열); 배열에 해당 값이 있으면 키 값을 리턴한다.
<?php
$meals = array('Walnut Bun' => 1,
'Cashew Nuts and White Mushrooms' => 4.95,
'Dried Mulberries' => 3.00,
'Eggplant with Chili Sauce' => 6.50,
'Shrimp Puffs' => 0);
$dish = array_search(6.50, $meals);
if ($dish) {
print "$dish 메뉴의 가격은 \$6.50입니다.";
}
//결과 Eggplant with Chili Sauce 메뉴의 가격은 $6.50입니다.
-배열의 연산
<?php
$dishes['Beef Chow Foon'] = 12;
$dishes['Beef Chow Foon']++;
$dishes['Roast Duck'] = 3;
$dishes['total'] = $dishes['Beef Chow Foon'] + $dishes['Roast Duck'];
if ($dishes['total'] > 15) {
print "많이도 먹었군";
}
print 'Beef Chow Foon 메뉴를 총 ' . $dishes['Beef Chow Foon'] . ' 그릇 드셨습니다.';
//많이도 먹었군Beef Chow Foon 메뉴를 총 13 그릇 드셨습니다.
-문자열 내부에 배열 원소의 값 삽입하기
<?php
$meals['breakfast'] = '호두 번';
$meals['lunch'] = '칠리 소스 가지 볶음';
$amounts = array(3, 6);
print "아침 메뉴는 $meals[breakfast],\n";
print "점심 메뉴는 $meals[lunch]으로 할께요.\n";
print "아침에는 $amounts[0]개, 점심에는 $amounts[1]개 부탁해요.";
//아침 메뉴는 호두 번,
//점심 메뉴는 칠리 소스 가지 볶음으로 할께요.
//아침에는 3개, 점심에는 6개 부탁해요.
<?php
$meals['Walnut Bun'] = '$3.95';
$hosts['www.example.com'] = '웹사이트';
print "호두 번의 가격은 {$meals['Walnut Bun']}입니다.\n";
print "www.example.com은 {$hosts['www.example.com']}입니다.";
//호두 번의 가격은 $3.95입니다.
www.example.com은 웹사이트입니다.
-sort(), asort(), ksort()로 배열 정렬하기
-역순으로 배열 정렬하기
-다차원 배열 정의하기
<?php
$meals = array('breakfast' => ['호두 번', '커피'],
'lunch' => ['캐슈너트', '양송이버섯'],
'snack' => ['말린 오디', '참깨 게살 무침']);
$lunches = [['닭고기', '가지', '쌀'],
['소고기', '부추', '국수'],
['가지', '두부']];
$flavors = array('Japanese' => array('hot' => '와사비',
'salty' => '간장 소스'),
'Chinese' => array('hot' => '머스터드',
'pepper-salty' => '허브잎'));
print $meals['lunch'][1]; // 양송이버섯
print $meals['snack'][0]; // 말린 오디
print $lunches[0][0]; // 닭고기
print $lunches[2][1]; // 두부
print $flavors['Japanese']['salty']; // 간장 소스
print $flavors['Chinese']['hot']; // 머스터드
-다차원 배열의 원소에 개별적으로 접근하기
<?php
$prices['dinner']['Sweet Corn and Asparagus'] = 12.50;
$prices['lunch']['Cashew Nuts and White Mushrooms'] = 4.95;
$prices['dinner']['Braised Bamboo Fungus'] = 8.95;
$prices['dinner']['total'] = $prices['dinner']['Sweet Corn and Asparagus'] +
$prices['dinner']['Braised Bamboo Fungus'];
$specials[0][0] = '체스트넛 번';
$specials[0][1] = '호두 번';
$specials[0][2] = '땅콩 번';
$specials[1][0] = '체스트넛 샐러드';
$specials[1][1] = '호두 샐러드';
// 숫자 키를 생략하면 배열 마지막에 추가된다.
// 이 구문은 $specials[1][2]에 저장된다.
$specials[1][] = '땅콩 샐러드';
-foreach()와 for() 루프로 다차언 배열의 각 원소 확인하기
<?php
$specials = array( array('체스트넛 번', '호두 번', '땅콩 번'),
array('체스트넛 샐러드','호두 샐러드', '땅콩 샐러드') );
// $num_specials은 $specials의 첫 번째 차원의 원소의 개수이므로 2다.
for ($i = 0, $num_specials = count($specials); $i < $num_specials; $i++) {
// $num_sub은 각 하위배열의 원소의 개수이므로 3이다.
for ($m = 0, $num_sub = count($specials[$i]); $m < $num_sub; $m++) {
print "Element [$i][$m]은 " . $specials[$i][$m] . "입니다.\n";
}
}
-문자열 내부에 다차원 배열 원소 삽입하기
<?php
$specials = array( array('체스트넛 번', '호두 번', '땅콩 번'),
array('체스트넛 샐러드','호두 샐러드', '땅콩 샐러드') );
// $num_specials은 $specials의 첫 번째 차원의 원소의 개수이므로 2다.
for ($i = 0, $num_specials = count($specials); $i < $num_specials; $i++) {
// $num_sub은 각 하위배열의 원소의 개수이므로 3이다.
for ($m = 0, $num_sub = count($specials[$i]); $m < $num_sub; $m++) {
print "Element [$i][$m]은 {$specials[$i][$m]}입니다.\n";
}
}
<?php
$dinner = array('스위트콘과 아스파라거스',
'레몬 치킨',
'삶은 망태버섯');
print "$dinner[0] 그리고 $dinner[1] 주세요.";
-배열 추가하기
<?php
// 두 개의 원소가 있는 $lunch 배열 생성하기
// $lunch[0]을 지정한다.
$lunch[] = '브라운 소스를 곁들인 말린 버섯';
// $lunch[1]을 지정한다.
$lunch[] = '파인애플과 버섯';
// 세 개의 원소가 있는 $dinner 배열 생성하기
$dinner = array('스위트콘과 아스파라거스',
'레몬 치킨',
'삶은 망태버섯');
// $dinner 배열 마지막에 원소 추가하기
// $dinner[3]이 지정된다.
$dinner[] = '양념 치마살';
-배열 삭제하기
<?php
$dishes = array();
unset($dishes['Roast Duck']);
-foreach로 배열의 키와 값 가져오기
<?php
$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>';
//결과
<table>
<tr><td>breakfast</td><td>호두 번</td></tr>
<tr><td>lunch</td><td>캐슈너트와 양송이버섯</td></tr>
<tr><td>snack</td><td>말린 오디</td></tr>
<tr><td>dinner</td><td>칠리 소스 가지 볶음</td></tr>
</table>
-foreach로 class 값 변경해서 css 다르게 적용하기
<?php
$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>
출처: 한빛 미디어 learning php
댓글