[웹 서비스 개발] PhP Basics 3

김광일·2024년 11월 19일

웹 서비스 개발

목록 보기
37/45
post-thumbnail

일자 : 24-2 13주차 1차시 (2)

[1] 배열의 세 가지 유형

  • 인덱스 배열: 숫자 인덱스를 사용하는 배열
  • 연관 배열: 이름을 키로 사용하는 배열
  • 다차원 배열: 다른 배열을 포함하는 배열

1) count()

(1) 설명
  • count() 함수는 배열의 길이(즉, 배열의 요소 개수)를 반환하는 함수이다.
(2) 예시
<?php
$cars = array("Volvo", "BMW", "Toyota");
echo count($cars);
?>

[2-1] PHP 인덱스 배열

1) 설명

  • 인덱스 배열은 숫자 인덱스를 사용하여 배열의 각 요소에 접근하는 배열이다.

2) 예시

<!DOCTYPE html>
<html>

<body>

    <?php
    // 배열 선언: $cars 배열에는 3개의 자동차 브랜드가 저장된다.
    $cars = array("Volvo", "BMW", "Toyota");

    // 배열 요소들을 사용하여 문자열을 연결하여 출력
    echo "I like " . $cars[0] . ", " . $cars[1] . " and " . $cars[2] . ".";
    // 출력: "I like Volvo, BMW and Toyota."
    ?>

</body>

</html>

[2-2] 인덱스 배열 순회

1) 설명

  • for 문을 사용하여 인덱스 배열의 각 요소에 접근하여 출력할 수 있다.

2) 예시

<!DOCTYPE html>
<html>
<body>

<?php
// 배열 선언: $cars 배열에는 3개의 자동차 브랜드가 저장된다.
$cars = array("Volvo", "BMW", "Toyota");

// 배열의 길이를 구하는 함수 count()를 사용하여 배열의 요소 개수를 저장
$arrlength = count($cars);

// 배열의 각 요소를 출력하기 위해 for문 사용
for($x = 0; $x < $arrlength; $x++) {
  // 배열의 각 요소를 출력
  echo $cars[$x];  
  // 각 요소마다 줄바꿈
  echo "<br>";  
}
?>

</body>
</html>

[3-1] PHP 연관 배열

1) 설명

  • 연관 배열은 문자열 키를 사용하여 값을 저장하는 배열이다. 각 키는 고유하며, 값은 해당 키에 대응된다.

2) 예시

$age = array("Peter"=>"35", "Ben"=>"37", "Joe"=>"43");
$age['Peter'] = "35";
$age['Ben'] = "37";
$age['Joe'] = "43";

[3-2] 연관 배열 예시

1) 첫 번째 예시

<!DOCTYPE html>
<html>

<body>

    <?php
    // 연관 배열 선언: 사람 이름을 키로, 나이를 값으로 저장
    $age = array("Peter" => "35", "Ben" => "37", "Joe" => "43");

    // 'Peter' 키의 값을 가져와서 출력
    echo "Peter is " . $age['Peter'] . " years old.";
    ?>

</body>

</html>

2) 두 번째 예시

<!DOCTYPE html>
<html>

<body>

    <?php
    // 연관 배열 선언: 사람 이름을 키로, 나이를 값으로 저장
    $age = array("Peter" => "35", "Ben" => "37", "Joe" => "43");

    // foreach 문을 사용하여 배열을 순회
    foreach ($age as $x => $x_value) {
        // 배열의 키와 값을 출력
        echo "Key=" . $x . ", Value=" . $x_value;
        // 각 항목마다 줄바꿈
        echo "<br>";
    }
    ?>

</body>

</html>

[4-1] 2차원 배열

$cars = array
(
array("Volvo",22,18),
array("BMW",15,13),
array("Saab",5,2),
array("Land Rover",17,15)
);

1) 설명

  • 2차원 배열은 배열 안에 배열이 포함된 구조이다. 각 배열은 행(row)과 열(column)로 구성된다.

[4-2] 2차원 배열 예시

1) 첫 번째 예시

<!DOCTYPE html>
<html>

<body>

    <?php
    // 2차원 배열 선언: 각 자동차 모델과 그 모델의 재고 및 판매량 정보를 저장
    $cars = array(
        array("Volvo", 22, 18), // 'Volvo' 모델, 재고 22, 판매 18
        array("BMW", 15, 13),    // 'BMW' 모델, 재고 15, 판매 13
        array("Saab", 5, 2),     // 'Saab' 모델, 재고 5, 판매 2
        array("Land Rover", 17, 15) // 'Land Rover' 모델, 재고 17, 판매 15
    );

    // 각 모델의 정보를 출력
    echo $cars[0][0] . ": In stock: " . $cars[0][1] . ", sold: " . $cars[0][2] . ".<br>";  // 'Volvo' 출력
    echo $cars[1][0] . ": In stock: " . $cars[1][1] . ", sold: " . $cars[1][2] . ".<br>";  // 'BMW' 출력
    echo $cars[2][0] . ": In stock: " . $cars[2][1] . ", sold: " . $cars[2][2] . ".<br>";  // 'Saab' 출력
    echo $cars[3][0] . ": In stock: " . $cars[3][1] . ", sold: " . $cars[3][2] . ".<br>";  // 'Land Rover' 출력
    ?>

</body>

</html>

2) 두 번째 예시

<!DOCTYPE html>
<html>
<body>

<?php
// 2차원 배열 선언: 각 자동차 모델과 그 모델의 재고 및 판매량 정보를 저장
$cars = array (
  array("Volvo", 22, 18),  // 'Volvo' 모델, 재고 22, 판매 18
  array("BMW", 15, 13),     // 'BMW' 모델, 재고 15, 판매 13
  array("Saab", 5, 2),      // 'Saab' 모델, 재고 5, 판매 2
  array("Land Rover", 17, 15) // 'Land Rover' 모델, 재고 17, 판매 15
);

// 외부 루프: $row는 0부터 3까지, 즉 4개의 자동차 모델에 대해 반복
for ($row = 0; $row < 4; $row++) {
  // 각 행에 대해 "Row number"를 출력
  echo "<p><b>Row number $row</b></p>";
  echo "<ul>";  // 목록 시작
  // 내부 루프: $col는 0부터 2까지, 즉 각 모델의 3개 항목(이름, 재고, 판매)에 대해 반복
  for ($col = 0; $col < 3; $col++) {
    // 각 항목을 리스트 항목으로 출력
    echo "<li>".$cars[$row][$col]."</li>";
  }
  echo "</ul>"; // 목록 종료
}
?>

</body>
</html>

[5] 슈퍼글로벌 변수

  • 슈퍼글로벌 변수는 전역 범위에서 항상 접근 가능한 배열들이다.

1) 종류

  1. $GLOBALS

    • 전역 범위에서 모든 변수를 접근할 수 있는 배열이다. GLOBALS 배열을 사용하여 전역 변수를 수정하거나 참조할 수 있다.
    • 예시: $GLOBALS['variable']
  2. $_SERVER

    • 서버와 실행 환경에 대한 정보를 담고 있는 배열이다. 예를 들어, 웹 서버의 정보, 요청 헤더, 스크립트의 경로 등이 포함된다.
    • 예시: $_SERVER['HTTP_USER_AGENT']
  3. $_REQUEST

    • $_GET, $_POST, $_COOKIE의 데이터를 모두 합친 배열이다. 사용자가 요청한 데이터를 포함하고 있다.
    • 예시: $_REQUEST['username']
  4. $_POST

    • HTTP POST 방식으로 전송된 데이터를 담고 있는 배열이다. 폼 데이터를 서버로 전송할 때 주로 사용된다.
    • 예시: $_POST['username']
  5. $_GET

    • URL 쿼리 스트링으로 전송된 데이터를 담고 있는 배열이다. GET 방식으로 전송된 데이터를 추출할 때 사용된다.
    • 예시: $_GET['id']
  6. $_FILES

    • 사용자가 업로드한 파일에 대한 정보를 담고 있는 배열이다. 파일의 이름, 크기, 타입 등 정보가 포함된다.
    • 예시: $_FILES['file']['name']
  7. $_ENV

    • 서버 환경 변수와 시스템 정보를 담고 있는 배열이다. 환경 설정 정보와 관련된 데이터를 포함한다.
    • 예시: $_ENV['PATH']
  8. $_COOKIE

    • 클라이언트 측에서 설정한 쿠키 데이터를 담고 있는 배열이다. 쿠키 값은 서버와 클라이언트 간의 상태 정보를 저장하는 데 사용된다.
    • 예시: $_COOKIE['user']
  9. $_SESSION

    • 세션 데이터를 저장하고 관리하는 배열이다. 사용자 세션 정보를 서버 측에서 유지하고, 사용자의 상태 정보를 저장한다.
    • 예시: $_SESSION['user_id']

[5-2] PHP $GLOBALS: $GLOBALS[index]

1) 설명

  • $GLOBALS 배열은 전역 변수들을 저장하는 배열이다. $GLOBALS[index]에서 index는 전역 변수의 이름을 담고 있으며, 이를 통해 전역 변수를 함수 내부에서도 접근하고 수정할 수 있다.

2) 예시

<!DOCTYPE html>
<html>

<body>

    <?php
    // 전역 변수 선언
    $x = 75;
    $y = 25;

    // addition 함수 정의
    function addition()
    {
        // $GLOBALS 배열을 사용하여 전역 변수 x와 y에 접근하고, 그 합을 z에 저장
        $GLOBALS['z'] = $GLOBALS['x'] + $GLOBALS['y'];
    }

    // addition 함수 호출
    addition();

    // 전역 변수 z의 값을 출력
    echo $z;
    ?>

</body>

</html>
  • 이 예시에서, addition 함수는 $GLOBALS 배열을 사용해 전역 변수 $x$y를 접근하여 합을 $z에 저장한다. 그 후, 전역 변수 $z의 값을 출력한다.

[5-3] Superglobal - $_SERVER

  • $_SERVER는 서버의 정보, 요청 헤더, 스크립트의 경로 등 서버 환경과 관련된 정보를 담고 있는 배열이다.

1) 예시 1

<?php
// PHP_SELF: 현재 실행 중인 스크립트 파일의 경로를 출력
echo $_SERVER['PHP_SELF'];
echo "<br>";

// SERVER_NAME: 서버의 호스트 이름을 출력
echo $_SERVER['SERVER_NAME'];
echo "<br>";

// HTTP_HOST: 요청을 보낸 호스트의 이름(도메인)을 출력
echo $_SERVER['HTTP_HOST'];
echo "<br>";

// HTTP_REFERER: 현재 페이지를 요청한 이전 페이지의 URL을 출력
echo $_SERVER['HTTP_REFERER'];
echo "<br>";

// HTTP_USER_AGENT: 클라이언트 브라우저의 정보(사용자 에이전트)를 출력
echo $_SERVER['HTTP_USER_AGENT'];
echo "<br>";

// SCRIPT_NAME: 실행 중인 스크립트의 경로를 출력
echo $_SERVER['SCRIPT_NAME'];
?>
  • 위 예시에서는 $_SERVER 배열을 사용하여 다양한 서버 및 요청 정보를 출력한다.
    • $_SERVER['PHP_SELF']: 현재 실행 중인 스크립트의 경로를 반환한다.
    • $_SERVER['SERVER_NAME']: 서버의 호스트 이름을 반환한다.
    • $_SERVER['HTTP_HOST']: 요청을 보낸 호스트의 도메인 이름을 반환한다.
    • $_SERVER['HTTP_REFERER']: 이전 페이지의 URL을 반환한다.
    • $_SERVER['HTTP_USER_AGENT']: 클라이언트의 브라우저 정보(사용자 에이전트)를 반환한다.
    • $_SERVER['SCRIPT_NAME']: 실행 중인 PHP 파일의 경로를 반환한다.

2) 예시 2

<!DOCTYPE html>
<html>

<body>

    <?php
    // 현재 실행 중인 PHP 파일의 경로를 출력
    echo $_SERVER['PHP_SELF'];
    echo "<br>";

    // 서버의 호스트 이름을 출력
    echo $_SERVER['SERVER_NAME'];
    echo "<br>";

    // 요청을 보낸 호스트의 이름(도메인)을 출력
    echo $_SERVER['HTTP_HOST'];
    echo "<br>";

    // 현재 페이지를 요청한 이전 페이지의 URL을 출력
    echo $_SERVER['HTTP_REFERER'];
    echo "<br>";

    // 클라이언트 브라우저의 정보(사용자 에이전트)를 출력
    echo $_SERVER['HTTP_USER_AGENT'];
    echo "<br>";

    // 실행 중인 스크립트의 경로를 출력
    echo $_SERVER['SCRIPT_NAME'];
    ?>

</body>

</html>

Summary

[1] 배열의 세 가지 유형

  • 인덱스 배열: 숫자 인덱스를 사용하여 배열의 요소에 접근.
  • 연관 배열: 문자열 키를 사용하여 배열의 값을 저장.
  • 다차원 배열: 배열 내에 또 다른 배열을 포함.

count() 함수

  • 배열의 길이(요소 개수)를 반환하는 함수.

[2-1] PHP 인덱스 배열

  • 숫자 인덱스를 사용하여 배열 요소에 접근하는 배열.
$cars = array("Volvo", "BMW", "Toyota");
echo $cars[0];  // "Volvo"

[2-2] 인덱스 배열 순회

  • for 문을 사용해 배열을 순회하여 각 요소를 출력.
$cars = array("Volvo", "BMW", "Toyota");
for ($x = 0; $x < count($cars); $x++) {
  echo $cars[$x];
}

[3-1] PHP 연관 배열

  • 문자열 키를 사용하여 값을 저장하는 배열.
$age = array("Peter" => "35", "Ben" => "37", "Joe" => "43");

[3-2] 연관 배열 예시

  1. 첫 번째 예시
$age = array("Peter" => "35", "Ben" => "37", "Joe" => "43");
echo "Peter is " . $age['Peter'] . " years old.";
  1. 두 번째 예시: foreach 문을 사용하여 배열 순회.
foreach ($age as $name => $age_value) {
  echo "Key=" . $name . ", Value=" . $age_value;
}

[4-1] 2차원 배열

  • 배열 안에 배열이 포함된 구조. 각 배열은 행(row)과 열(column)로 구성.
$cars = array(
  array("Volvo", 22, 18),
  array("BMW", 15, 13),
  array("Saab", 5, 2)
);

[4-2] 2차원 배열 예시

  1. 첫 번째 예시: 2차원 배열의 요소를 출력.
echo $cars[0][0] . ": In stock: " . $cars[0][1] . ", sold: " . $cars[0][2];
  1. 두 번째 예시: 중첩된 for 문을 사용하여 2차원 배열 출력.
for ($row = 0; $row < 4; $row++) {
  for ($col = 0; $col < 3; $col++) {
    echo $cars[$row][$col];
  }
}

[5] 슈퍼글로벌 변수

  • 전역 범위에서 항상 접근 가능한 배열들.

1) 종류

  • $GLOBALS: 전역 변수를 접근할 수 있는 배열.
  • $_SERVER: 서버 정보, 요청 헤더, 스크립트 경로 등의 정보.
  • $_REQUEST: $_GET, $_POST, $_COOKIE 데이터를 포함한 배열.
  • $_POST: HTTP POST 방식으로 전송된 데이터를 담은 배열.
  • $_GET: URL 쿼리 스트링으로 전송된 데이터를 담은 배열.
  • $_FILES: 업로드된 파일의 정보를 담은 배열.
  • $_ENV: 서버 환경 변수와 시스템 정보를 담은 배열.
  • $_COOKIE: 클라이언트 측 쿠키 데이터를 담은 배열.
  • $_SESSION: 세션 데이터를 저장하고 관리하는 배열.

[5-2] PHP $GLOBALS

  • $GLOBALS[index]를 통해 전역 변수를 함수 내에서 접근하거나 수정할 수 있음.

[5-3] $_SERVER

  • 서버 환경 정보와 관련된 다양한 값을 제공하는 슈퍼글로벌 배열. 예시로 $_SERVER['PHP_SELF'], $_SERVER['SERVER_NAME'], $_SERVER['HTTP_USER_AGENT'] 등이 있다.

profile
안녕하세요, 사용자들의 문제 해결을 중심으로 하는 프론트엔드 개발자입니다. 티스토리로 전환했어요 : https://pangil-log.tistory.com

0개의 댓글