CHAPTER 4 데이터 집합: 배열 다루기

php

http://phptester.net/

$this 의 의미는 현재 자신을 나타내는 표현이고,

→ 의 의미는 객체 내의 속성이나 메소드를 가르킬 때 사용합니다.

$this→shape은 현재 객체 내의 shape 이라는 속성을 가르킵니다.

Chapter 1 ~ 20

Chapter 1. 오리엔테이션과 첫걸음

  • 프린트 출력
<?php

print 'test';

?>

예제 1-2) 데이터를 제출하는 HTML 폼

<form method="POST" action="sayhello.php">
이름: <input type="text" name="user" />
<br/>
<button type="submit">인사</button>
</form>

예제 1-3) 동적데이터

  • $_POST에는 폼 매개변수로 제출된 값이 담긴다.
<?php
print "hello.";
print $_POST['user'];
print "!";
?>

1-4) 폼 출력

  • <<<HTML_과 _HTML 사이에 있는 모든 내용을 print 명령에 전달
<?php
print <<<_HTML_
<form method="post" action="$_SERVER[PHP_SELF]">
이름: <input type="text" name="user" />
<br/>
<button type="submit">인사</button>
</form>
_HTML_;
?>

1-5) 환영인사와 폼 출력

<?php
if ($_POST['user']) {
        print "hello.";
        print $_POST['user'];
        print "!";

} else {
        print <<<_HTML_
        <form method="post" action="$_SERVER[PHP_SELF]">
        이름: <input type="text" name="user" />
        <br/>
        <button type="submit">인사</button>
        </form>
        _HTML_;
}
?>

1-6) 형식화된 숫자 출력

<?php print "한국의 대략적인 인구: ";
    print number_format(584989);
?>
출력 값
한국의 대략적인 인구: 50,801,405

1-7) 데이터베이스에서 정보를 가져와 표시하기

<?php
//SQLite 데이터베이스 파일에 접속하도록 지시
$db = new PD0('sqlite:dinner.db');
$meals = array('아침','점심','저녁');

if (in_array($_POST['meal'], $meals)) {
    $stmt = $db->prepare('SELECT dish, price FROM meals WHERE meal LIKE ?');
  $stmt->execute(array($_POST['meal'])));
    $rows = $stmt->fetchAll();
    if (count($rows) ==) {
        print "가능한 요릭 없습니다.";
    } else {
        print '<table><tr><th>요리 ';
        foreach ($rows as $row) {
            print "<tr>";
        }
    }
}
?>

1-8) 여러 쌍의 시작 태그와 종료 태그

  • 시작태그와 종료태그 php 엔진은 이 바깥쪽 태그는 완전히 무시한다. php 파일 맨 마지막 종료태그는 생략할 수 있다.

주석

/* */
//
#

문자열 출력

print '"나 지금 저녁 식사중이라고" 그가 으르렁 거렸다.';
print 'we\'ll each have a bowlof soup.';
print 'we\\'; -> 
# we\ 출력

print '<ul>
<li>소고기 볶음</li>
</ul>';

chapter2 데이터:텍스트와 숫자 다루기

2-1) 큰따옴표 문자열 안에서 사용할 수 있는 특수 문자

php%201ef9f18778a54b718ea7fa9fbe17dbd2/Untitled.png

  • 작은따옴표 : 변수명이 그대로 출력

    ex) 'Hi $user' → Hi $user

  • 큰 따옴표 : 대치가 일어남

    ex) Hi Bill

  • HTMLBLOCK이 구분자 단어로 쓰였다. 구분자의 첫 글자는 반드시 알파벳이나 밑줄문자여야 한다. here 문서의 시작 지점을 시각적으로 알 수 있도록 대문자로 쓰는 것이 좋다. here 문서를 종료할 때 쓰는 구분자는 해당 줄에 홀로 존재해야 한다.

<<<HTMLBLOCK
<html>
<head><title>메뉴</title></head>
</html>
HTMLBLOCK
  • 예외적으로 구분자 뒤에 ; 를 사용할 수 있지만, 그 뒤에 아무것도 없어야 한다.
<<<HTMLBLOCK
<html>
<head><title>메뉴</title></head>
</html>
HTMLBLOCK;

chapter 3 (로직: 조건 판단과 반복 수행)

$price = $quantity = 5;

3.2 조건 판단

if ($logged_in) {
    print "환영합니다 정회원님.";
}

if ($logged_in) {
    print "환영합니다 정회원님.";
} else {
    print "반갑습니다 방문자님";
}

if ($logged_in) {
    print " 환영합니다 정회원님.";
} elseif ($new_messages) {
    print "방문자님,새로운 메세지가 있습니다.";
} elseif ($emergency) {
    print "방문자님,새로운 메세지는 없습니다만, 긴급 상황입니다.";
} else {
    print " 누구? ";
}

3.3 비교연산자

1. 같다 ==
2. 다르다 !=
3. >, >= <=
4. 절대값 abs()
  • php에서는 문자열 비교 시, 숫자로 변환해 비교한다.

  • strcmp() 함수를이용하면 문자를 숫자로 변환 비교하여 큰지 작은지 판단할 수 있다.

    $x = strcmp("x54321", "x5678");
    if ($x > 0) {
        print "test"
    }

CHAPTER 4 데이터 집합: 배열 다루기

4.1 배열 기초

4.1.1 배열 생성

키와 값 구분 : ⇒

키/값 쌍 목록 구분 : , (쉼표)

예제 4-1) 배열 생성하기

  • 문자열은 따옴표로 감싸고, 수는 그대로 쓴다.
$vegetables = array('corn' => '노랑',
                                        'beet' => '빨강',
                                      'carrot' => '주황',);

$dinner = array(0 => '스위트콘',
                                1 => '레몬 치킨',
                                2 => '삶은 망태버섯');

$computers = array('nintendo' => '닌텐도',
                                1 => '레몬 치킨',
                                'saturn' => '삶은 망태버섯');

예제 4-2) 단축 배열 문법으로 배열 선언하기

  • array() 구조는 대괄호 쌍으로 축약할 수 있다.
  • 이를 단축 배열 문법이라고 한다.
  • 단축배열 문법은 PHP 5.4에서 도입 되었다.
$vegetables = ['corn' => '노랑','beet' => '빨강', 'carrot' =>'주황' ];

$dinner = [0 => '스위트콘',
                     1 => '레몬치킨',
                     2 => '삶은 망태버섯'];

$computers= ['nintendo' => '닌텐도', 1 => '레몬 치킨', 'saturn' =>'삶은 망태버섯' ];

예제 4-3) 원소를 하나씩 추가해 배열 생성하기

  • 배열명 다음에 나오는 대괄호는 배열에 지정할 키를 나타낸다. 이 키에 값을 할당하면 배열에 원소가 추가된다.
$vegetables['corn'] = '노랑';
$vegetables[1] = '레몬치킨';

4.1.2 적절한 배열명

  • 배열 ↔ 스칼라변수는 값을 할 당할 때마다 이 전에 있던 값이 지워지고 이후의 값으로 바뀐다.

4.1.3 숫자 키 배열

예제 4-5) array()로 숫자 키 배열 생성하기

$dinner = array('스위트콘',
                                '레몬',
                                '버섯');
print "$dinner[0] 그리고 $dinner[1] 주세요";

출력 값 : 스위트콘 그리고 레몬 주세요

예제 4-6) []로 배열 원소 추가하기

$lunch[] = 'test';
$lunch[] = '22';
$lunch = array('abc',
                'def',
                'ghr');
print($lunch[0]);
print($lunch[1]);
print($lunch[2]);

abcdefghr

4.1.4 배열 크기 구하기

  • count() 함수를 이용해서 배열 원소가 몇 개 인지 알 수 있다.

예제 4-7 배열의 크기 구하기

$lunch = array('abc',
                'def',
                'ghr');
$test = count($lunch);
print "총 메뉴 개수 : $test"; 

출력 : 총 메뉴 개수 : 3

4.2 배열 원소 순회

  • foreach()를 이용하여 배열의 각 원소를 순회할 수 있다.

예제 4-8) foreach() 반복문

  • $meal 배열의 각 원소에 대해 $key 변수에 키를, $value 변수에 값을 복사한 뒤 중괄호 내부의 코드를 실행한다.
$meal = array(
'brakfast' => '호두 번',
'lunch' => '캐슈너트와 양송이 버섯',
'snack' => '말린 오디',
'diner' => '치리 소스 가지볶음');

print "<table>\n";
foreach ($meal as $key => $value) {
    print "<tr><td>$key</td><td>$value</td></tr>";
}
print '</table>';
brakfast    호두 번
lunch    캐슈너트와 양송이 버섯
snack    말린 오디
diner    치리 소스 가지볶음

예제 4-9) foreach() 반복문

$row_styles = array('even', 'odd');
$style_index = 0;
$meal = array('breakfast' => '호두 번',
        'lunch' => '캐슈넛',
        'snack' => '말린오디',
        'dinner' => '칠리소스 가지볶음');
print "<table>\n";
foreach ($meal as $key => $value) {
    print '<tr lass="' . $row_styles[$style_index] . '">';
    print "<td>$key</td><td>$value</td></tr>\n";
    $style_index = 1 -$style_index;    
};
print '</table>';
<table>
<tr lass="even"><td>breakfast</td><td>호두 번</td></tr>
<tr lass="odd"><td>lunch</td><td>캐슈넛</td></tr>
<tr lass="even"><td>snack</td><td>말린오디</td></tr>
<tr lass="odd"><td>dinner</td><td>칠리소스 가지볶음</td></tr>
</table>

예제 4-10) foreach()로 배열 수정하기

$meals = array('walnut Bun' => 1,
                'Cashew Nuts and White Mushromos' => 4.95,
                'Dried Mulberries' => 3.00,
                'Eggplant with Chili sauce' => 6.50);

foreach ($meals as $dish => $price) {
    $meals[$dish] = $meals[$dish] *2;
}

foreach ($meals as $dish => $price) {
    printf("%s 메뉴의 변경된 가격은 \$%.2f입니다.\n", $dish, $price);
}
  • 결과
walnut Bun 메뉴의 변경된 가격은 $2.00입니다.
Cashew Nuts and White Mushromos 메뉴의 변경된 가격은 $9.90입니다.
Dried Mulberries 메뉴의 변경된 가격은 $6.00입니다.
Eggplant with Chili sauce 메뉴의 변경된 가격은 $13.00입니다.

예제 4-11) foreach()에서 숫자 키 배열 사용하기

$dinner = array('스위트콘과 아스파라거스',
                                '레몬 치킨',
                                '삶은 망태버섯');

foreach ($dinner as $dish) {
    print "주문가능 메뉴 : $dish\n";
}
  • 결과
주문가능 메뉴 : 스위트콘과 아스파라거스
주문가능 메뉴 : 레몬 치킨
주문가능 메뉴 : 삶은 망태버섯

예제 4-12) for()로 숫자 키 배열 순회하기

  • 숫자 키 배열을 순회하는 동안 현재 원소가 무엇인지 알려면 foreach() 대신 for()를 써야함
$dinner = array('스위트콘과 아스파라거스',
                                '레몬 치킨',
                                '삶은 망태버섯');
for ($i = 0, $num_dishes = count($dinner); $i < $num_dishes; $i++) {
    print "메뉴 번호 $i: $dinner[$i]\n";
}
  • 결과
메뉴 번호 0: 스위트콘과 아스파라거스
메뉴 번호 1: 레몬 치킨
메뉴 번호 2: 삶은 망태버섯

예제 4-13) for()로 테이블 행의 클래스명 번갈아 출력하기

$row_styles = array('even','odd');
$dinner = array('스위트콘',
'레몬치킨',
'삶은 망태버섯'
);
print '<table>';

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>

예제 4-14) 배열 원소 순서와 foreach()

$letters[0] = 'A';
$letters[1] = 'B';
$letters[3] = 'D';
$letters[2] = 'C';

foreach ($letters as $letter) {
    print $letter;
}
  • 결과
ABDC

예제 4-15) 특정 키에 해당하는 원소가 있는지 확인하기

$meals = array('walnut bun' => 1,
'cashew nut' => 4.95,
'dried Mulberries' => 3.00,
'eggplant with chili sauce' => 6.50,
'shrimp puffs' => 0);

$books = array('이용객을위한 A급 중국어 안내',
'중국의 요리 방식고 식사 문화');

if (array_key_exists('walnut bun', $meals)) {
    print "네,Shirmp puffs 메뉴도 가능합니다.";
}

예제 4-16) 배열 원소 중 특정 값이 있는지 확인하기

$meals = array('walnut bun' => 1,
'cashew nut' => 4.95,
'dried Mulberries' => 3.00,
'eggplant with chili sauce' => 6.50,
'shrimp puffs' => 0);

$books = array('이용객을위한 A급 중국어 안내',
'중국의 요리 방식고 식사 문화');

if (in_array(3, $meals)) {
    print '가격이 $3인 메뉴가 있습니다.';
}

예제 4-17) 배열 원소 중 특정 값 찾기

$meals = array('walnut bun' => 1,
'cashew nut' => 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입니다.
  • 배열의 원소를 제거하려면 unset()을 사용한다.
unset($dishes['Roast Duck']);

예제 4-21) implode()로 배열에서 문자열 생성하기

$dimsum = array('닭고기 번', '오리발 구이','순무 케이크');
$menu = implode(', ', $dimsum);
print $menu;
  • 결과
닭고기 번, 오리발 구이, 순무 케이크
$letters = array('A', 'B', 'C', 'D');
print implode('', $letters);
  • 결과
ABCD

4-22. implode()로 HTML 테이블행 출력하기

$dimsum = array('닭고기 번', '오리발 구이', '순무 케이크');
print '<tr><td>' . implode('</td><td>', $dimsum), '</td></tr>';

4-23. explode()로 문자열에서 배열 생성하기

$fish = '농어, 잉어, 꼬치고기, 가자미';
$fish_list = explode(', ',$fish);
print "두 번째 물고기는 $fish_list[1]입니다.";
  • 결과
두 번째 물고기는 잉어입니다.

4-24. sort()를 이용한 정렬

$dinner = array(
'Sweet Corn and Asparagus',
'Lemon Chicken',
'Braised Bamboo Fungus'
);

$meal = array(
'brrakfast' => 'Walnut Bun',
'lunch' => 'Cashew Nuts and White Mushrooms',
'snack' => 'Dried Mulberries',
'dinner' => 'Eggplant with Chili Sauce');

foreach ($dinner as $key => $value) {
    print "\$dinnder : $key $value\n";
}

foreach ($meal as $key => $value) {
    print "\$meal : $key $value\n";
}

sort($dinner);
sort($meal);

foreach ($dinner as $key => $value) {
    print "\$dinndr : $key $value\n";
}

foreach ($meal as $key => $value) {
    print "\$meal : $key $value\n";
}
  • 결과
$dinner : 0 Sweet Corn and Asparagus 
$dinner : 1 Lemon Chicken 
$dinner : 2 Braised Bamboo Fungus 

$meal : brrakfast Walnut Bun 
$meal : lunch Cashew Nuts and White Mushrooms 
$meal : snack Dried Mulberries 
$meal : dinner Eggplant with Chili Sauce 

$dinndr : 0 Braised Bamboo Fungus 
$dinndr : 1 Lemon Chicken 
$dinndr : 2 Sweet Corn and Asparagus 

$meal : 0 Cashew Nuts and White Mushrooms 
$meal : 1 Dried Mulberries
$meal : 2 Eggplant with Chili Sauce
$meal : 3 Walnut Bunwalnut : 호두나무, 호두, 호두나무 재목, 호두 빛깔, 다갈색

댓글

Designed by JB FACTORY