[PHP기초] 데이터 집합 - 배열다루기

by 조쉬 posted Mar 27, 2021
?

단축키

Prev이전 문서

Next다음 문서

ESC닫기

크게 작게 위로 아래로 댓글로 가기 인쇄

 

-배열의 구성요소: 원소, 키, 값

-배열을 정의하는 두가지 방법: 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>