php

[php 튜토리얼] 1주차 최종정리 보고서

namgi 2022. 9. 8. 23:32
반응형

1회차 - 구문, 주석, 변수

<?php

//x와 y 변수 지정
$x = 10;
$y = 15;

//x와 y의 더한 값 출력
echo $x + $y;

/*1회차의 내용정리
(구문, 주석, 변수)*/

?>

php의 시작태그는 '<?php', 끝 태그는 '?>',

php의 출력 코드는 'echo',

php문은 세미콜론(;) 으로 끝난다.

 

php에서 한 줄 주석은 ' // '

여러 줄 주석은 ' /*(텍스트)*/ ' 를 사용한다.

 

php에서의 변수는 ' $ '로 지정할 수 있다.

변수는 대소문자 구분, 숫자로 시작할 수 없다.

2회차 - 문자열, 수학

php 2회차에선 문자열과 수학에 대해 배웠다.

문자열

  • strlen() - 문자열의 길이 반환
  • str_word_count() - 문자열의 단어 수 계산
  • strrev() - 문자열 반전
  • strpos() - 문자열 내에서 텍스트 검색
  • str_replace() - 문자열 내의 텍스트 바꾸기

수학

  • pi() - 파이값 출력
  • min(), max() - 가장 작은 값, 가장 큰 값 확인
  • abs() - 절대값 출력
  • sqrt() - 제곱근 출력(숫자를 '9'로 지정했을 때 '3' 출력)
  • round() - 소수점 숫자를 가장 가까운 정수로 반올림
  • rand() - 숫자 두 개를 지정했을 때 그 사이의 랜덤값 출력

문자열과 숫자에 대해 더 많은 내용은

https://namgi.tistory.com/7 블로그에 작성 되어있다.

 

 

3회차 - 조건문, Switch

<?php

//num 변수 선언
$num = ("25");

//만약 num < 15(미만)라면 밑의 코드 실행
if ($num < "15") {
  echo "15번 입니다.";
  
//아니라면 밑의 코드 실행
} elseif($num < "20") {
  echo "15번이 아닙니다.";

//15미만도, 20미만도 아니라면 밑의 코드 실행
} else {
  echo "당신은 25번 입니다.";
}
?>

여기서 선언된 변수 '$num'은 25이기에

15미만도, 20미만도 아니다.

그러므로 "당신은 25번 입니다."가 출력된다.

실행화면

<?php
$num = (rand(1, 4));

switch ($num) {
  case "1":
    echo "당신은 1번을 뽑았습니다!";
    break;
  case "2":
    echo "당신은 2번을 뽑았습니다!";
    break;
  case "3":
    echo "당신은 3번을 뽑았습니다!";
    break;
  default:
    echo "꽝을 뽑았습니다.";
}
?>

변수 num을 1~4까지의 랜덤 숫자로 뽑게 둔다.

랜덤으로 뽑힌 숫자가 1이라면 "당신은 1번을 뽑았습니다!",

랜덤으로 뽑힌 숫자가 2이라면 "당신은 2번을 뽑았습니다!",

랜덤으로 뽑힌 숫자가 3이라면 "당신은 3번을 뽑았습니다!",

랜덤으로 뽑힌 숫자가 4라면 "꽝을 뽑았습니다."를 실행한다.

 

break; 를 이용하여 자동으로 다음 코드로 넘어가는 것을 방지했다

default: 코드는 1번, 2번, 3번도 아닌 4번을 뽑았다면 실행되는 코드이다.

렌덤으로 '1'이 뽑혔기에 위처럼 텍스트 실행됨.

4회차 - Loop

<?php
//num 변수 선언
$num = 1;

//변수 num이 5보다 작거나 같다면,
while($num <= 5) {

  //코드실행
  echo "숫자 카운트 = $num <br>";
  
  //각 반복마다 값을 1씩 증가
  $num++;
}
?>

while() - 조건이 true인 동안 코드를 반복 실행

코드 실행 결과

변수 $num의 조건을 '5보다 작거나 같다면' 으로 놓았기에 5번 반복된다.

do ~ while() - 조건이 false인 경우에도 명령문 실행

<?php
//변수 num = 6으로 선언
$num = 6;

do {
  echo "숫자 카운트 = $num <br>";
  $num++;
  
  //조건, %num이 5보다 작거나 같다면,
} while ($num <= 5);
?>

코드 실행 화면

$num의 조건은 '5보다 작거나 같다면' 이지만

선언된 변수 '$num' 은 6이기에 조건은 false이다.

 

하지만 do ~ while 문은 조건이 false 인 경우에도 한 번 이상 결과를 실행하기에,

위 사진처럼 코드가 실행된다.

for()

<?php
//변수 선언, 조건 선언, true일 때 까지 실행
for ($num = 1; $num <= 5; $num++) {
  echo "숫자 카운트= $num <br>";
}
?>

변수 $num을 선언하고 true일 때 까지 반복하게 만드는 코드이다.

실행 결과는 while()과 같다.

foreach() - 정한 배열(array) 값을 출력

<?php 
//color 변수에 배열(array)지정
$color = array("red", "orange", "yellow", "green"); 

foreach ($color as $val) {
  echo "$val <br>";
}
?>

실행결과

foreach 문은 변수에 배열을 지정하고

지정한 배열을 출력하는 코드이다.

 

$color 변수에 색깔들로 배열을 설정해둬, 실행 결과는 위 사진과 같다.

5회차 - 배열

인덱스 배열 - array() 안에 배열 할당

<?php
//color 변수에 인덱스 할당
$color = array("빨강", "주황", "파랑");

//할당한 인덱스를 출력
echo "저는 " . $color[0] . "색과 " . $color[1] . ", " . $color[2] . "색을 좋아합니다.";
?>

실행결과

$color 변수 안에 배열을 정한 후 인덱스를 할당시킨다. 

인덱스는 항상 0 부터 시작한다.

 

위 코드에서 '[0] = 빨강', '[1] = 주황', '[2] = 파랑' 을 의미한다.

연관 배열 - name과 key를 사용하는 배열

<?php 
//age 변수에 '남기', '지민', '서현'의 값을 지정
$age = array("남기"=>"16", "지민"=>"19", "서현"=>"25");

//지정한 '남기'의 값을 출력
echo "남기는 " . $age['남기'] . "살 입니다."
?>

실행결과

"name"을 정하고 "key"를 정해 배열을 만든다.

6줄, '$age['남기']' 에서 '남기' 가 아닌 '지민' 또는 '서현' 을 입력하면

'지민' 과 '서현' 의 key 값을 출력한다. 

 

전 회차에서 배운 foreach문을 이용하여 모든 값을 출력하게 할 수 있다.

<?php 
//age 변수에 '남기', '지민', '서현'의 값을 지정
$age = array("남기"=>"16", "지민"=>"19", "서현"=>"25");

//변수 $name과 $age_val을 선언하고
foreach($age as $name => $age_val) {

  //출력 코드를 실행
  echo "이름은 " . $name . ", 나이는 " . $age_val . "살 입니다.";
  echo "<br>";
}
?>

실행결과

다차원 배열 - 하나 이상의 배열을 포함하는 배열

이름 남은 개수 팔린 개수
사과 125 25
바나나 110 40
오렌지 70 50

위 표는 2차원 배열이다.

2차원 배열은 배열의 배열이다. (3차원 배열은 배열의 배열의 배열)

 

위 표의 데이터를 이용하여 배열 코드를 밑과 같이 작성할 수 있다.

$fruits = array (
  //array("이름", 남은 개수, 팔린 개수)
  array("사과", 125, 25) ,
  array("바나나", 110, 40) ,
  array("오렌지", 70, 50)
);

왼쪽으로 차례대로 이름, 남은 개수, 팔린 개수를 배열로 정리했다.

정리한 배열을 출력해보자.

<?php
$fruits = array (
  //array("이름", 남은 개수, 팔린 개수)
  array("사과", 125, 25) ,
  array("바나나", 110, 40) ,
  array("오렌지", 70, 50)
);

echo $fruits[0][0].": 남은 개수: ".$fruits[0][1].", 팔린 개수: ".$fruits[0][2].".<br>";
echo $fruits[1][0].": 남은 개수: ".$fruits[1][1].", 팔린 개수: ".$fruits[1][2].".<br>";
echo $fruits[2][0].": 남은 개수: ".$fruits[2][1].", 팔린 개수: ".$fruits[2][2].".<br>";
?>

실행결과

6회차 - 슈퍼전역변수(super global)

-슈퍼 전역 변수는 모든 범위에서 항상 사용할 수 있는 내장 변수이다.

$GLOBALS - 전역 변수에 액세스하는 데 사용되는 PHP 슈퍼 전역 변수

<?php
//변수 x와 y를 지정
$x = 10;
$y = 15;

//plus라는 함수에 $GLOBALS['z']를 할당
function plus() {
  $GLOBALS['z'] = $GLOBALS['x'] + $GLOBALS['y'];
}

//plus함수 호출, z 출력
plus();
echo $z;
?>

실행결과

PHP는 $GLOBALS[ 'index' ] 라는 배열에 모든 전역 변수를 저장한다. 

'index' 는 변수의 이름을 할당한다.

$_SERVER - 여러 서버에 관한 정보를 보유하는 변수

<?php
echo $_SERVER['PHP_SELF'];
echo "<br>";
echo $_SERVER['SERVER_NAME'];
echo "<br>";
echo $_SERVER['HTTP_HOST'];
echo "<br>";
echo $_SERVER['HTTP_REFERER'];
echo "<br>";
echo $_SERVER['HTTP_USER_AGENT'];
echo "<br>";
echo $_SERVER['SCRIPT_NAME'];
?>

실행 결과는 다음과 같다.

조금 더 자세한 사항은 https://namgi.tistory.com/11 를 참고하자.

$_REQUEST -  HTML 양식 제출 후 수집하는데 사용되는 슈퍼 전역 변수

<!DOCTYPE html>
<html>
<body>

<!--제출된 데이터가 'action' 속성에 지정된 파일로 전송-->
<form method="post" action="<?php echo $_SERVER['PHP_SELF'];?>">
  
  <!--텍스트 입력필드 설정-->
  Name: <input type="text" name="fname">
  
  <!--데이터 제출필드 설정-->
  <input type="submit">
</form>

<?php
if ($_SERVER["REQUEST_METHOD"] == "POST") {

    //입력 필드의 값을 수집
    $name = htmlspecialchars($_REQUEST['fname']);
    
    //만약 'name'(텍스트 필드)이 공백이라면
    if (empty($name)) {
    
        //'Name is empty' 출력
        echo "Name is empty";
        
      //아니라면 입력값 출력
    } else {
        echo $name;
    }
}
?>

</body>
</html>

실행결과

Name 칸에 텍스트 작성 후 '제출'을 누르면

'$_REQUEST' 슈퍼 전역 변수를 이용하여 입력한 데이터를 수집한다.

그 후 데이터가 <form> 태그의 action 속성에 지정된 파일로 전송된다.

$_POST - method="post"로 HTML 양식 제출, 데이터 수집

<!DOCTYPE html>
<html>
<body>

<!--제출된 데이터가 'action' 속성에 지정된 파일로 전송-->
<form method="post" action="<?php echo $_SERVER['PHP_SELF'];?>">
  
  //<!--텍스트 입력필드 설정-->
  Name: <input type="text" name="fname">
  
  <!--데이터 제출필드 설정-->
  <input type="submit">
</form>

<?php
if ($_SERVER["REQUEST_METHOD"] == "POST") {

    //입력 필드의 값을 수집
    $name = $_POST['fname']
    
    //만약 'name'(텍스트 필드)이 공백이라면
    if (empty($name)) {
    
        //'Name is empty' 출력
        echo "Name is empty";
        
      //아니라면 입력값 출력
    } else {
        echo $name;
    }
}
?>

</body>
</html>

'$_REQUEST' 와 코드실행결과는 같다.

$_GET - method="get"로 HTML 양식 제출, 데이터 수집

$_GET은 url로 전송된 데이터도 수집할 수 있다.

 

밑의 코드는 예시의 HTML 페이지 코드이다.

이 코드 안에 'subject, web' 매개변수가 들어있다.

<html>
<body>

<a href="test_get.php?subject=PHP&web=W3schools.com">Test $GET</a>

</body>
</html>

 

사이트 이용자가 Test $Get 링크를 클릭한다면,

위에서 정한 'subject, web' 매개변수가 'test_get.php'로 전송하게 된다.

 

아래 코드는 'test_get.php'의 코드이다.

<html>
<body>

<?php
echo "Study " . $_GET['subject'] . " at " . $_GET['web'];
?>

</body>
</html>

코드를 실행한다면 이런 화면이 되고

'Test $GET' 을 클릭한다면

위에서 정한 매개변수가 들어가 출력이 되는 것이다.

7회차 - 사용자 정의 함수

<?php

//함수 정의
function writeMsg() {

  //"Hello world!" 출력
  echo "Hello world!";
}

//'hellomsg' 함수 호출
writeMsg();
?>

실행결과

php에서 사용자 정의 함수 선언은 function 으로 가능하다.

위 코드에선 'writeMsg' 라는 함수를 정의하고 불러오는 기능을 한다.

PHP 함수 인수

<?php

//names 함수 정의, $friendname 인수 정의
function names($friendname) {

  //'names'힘수에 있는 인수와 텍스트 함께 출력
  echo "$friendname 출석체크<br>";
}

//함수 불러오기
names("남기");
names("민혁");
names("지민");
names("시우");
?>

실행결과

'names' 함수 안에 'friendname' 인수를 정할 수 있다.

여기서 인수는 변수와 같은 역할을 한다.

함수를 불러올 때 함수 이름과(names) 인수를 함께 적어 불러올 수 있다.

 

인수 두 개를 설정하는 것도 가능하다.

<?php

//names 함수 정의, $friendname, $number 인수 정의
function names($friendname, $number) {

  //'names'힘수에 있는 인수와 텍스트 함께 출력
  echo "$friendname, $number 출석체크<br>";
}

//함수 불러오기
names("남기", "05번");
names("민혁", "13번");
names("지민", "20번");
names("시우", "25번");
?>

실행결과

'$number' 인수를 정해 출력할 수 있다.


php 튜토리얼이 이렇게 끝났다.

다음 블로그에선 'Forms'와 'Advanced'를 배워볼 것이다.

반응형