본문 바로가기

프로그래밍/php

PHP 기본문법 - 4주차(1)

이번 주차 수업에서는 php에서 조건문, 반복문, foreach 등 다양한 제어문(?)에 대해서 배웠다.

 

1. 조건문 - if

<?php
$username = "user";
$password = "pass";
$db_data["username"] = "user";
$db_data["password"] = "pass";

if($db_data["username"]==$username $$ $db_data["password"]==$password){
  print "회원 페이지입니다.";
} else {
  print "로그인에 실패하였습니다.";
}
?>

 

if 문법은 자바랑 비슷한것 같다. print 양식이 조금 신기하다.

자바랑 마찬가지로 세미클론이 명령 끝마다 필수라는 점을 잘 기억해두자.

if문 형식은 if(조건){true일때 작동;}else{false일때 작동;}이다. if 바로옆 ( )괄호에 있는 조건문에는 세미클론 필요없음!!! 참,거짓 판단 후 작동하는 명령에만 세미클론을 붙이면 된다.

 

또 까먹지 말아야 할 것은 php를 시작할 때 <?php 로 코드를 열고, 끝았으면 ?>로 닫아주어야 한다는 점이다.

근데 ?> 가 없어도 코드가 돌아가긴 한다. 하지만 자바스크립트나 HTML이랑 섞여서 쓰이게 되면 문제가 생길 수 있으니 습관화 해두는게 좋다. 

 


 

2. 조건문 - switch

자바에도 비슷한 기능이 있는 Switch 기능에 대해서 다뤄보자.

스위치 기능은 여러가지 선택 옵션에 대한 출력 값을 정해주고 나머지는 디폴트로 지정해 두는 것이다. if 문과 비슷하면서도 다름

<?php
$type = "form";
switch($type){
    case "form": print "등록 폼입니다.";
    break;
    case "conform": print "확인 화면입니다.";
    break;
    case "exec" : print "등록 처리를 살행중입니다.";
    break;
    default : print "화면이 없습니다.";
}
?>

위의 코드를 분석해보자면 먼저 type 변수에 데이터를 넣어주고, switch문에 type변수를 매개변수로 넣어서 각 case에 맞는 것을 매칭한 후에 출력한다. 자신에게 맞는 케이스를 만나 작동하고 나면 break문으로 빠져나오게 된다. 만약 케이스 중 어디에도 속하지 않으면 default 문으로 처리가 마감된다.

 

Q. default 문을 처리해주지 않으면?

-> 그냥 빈칸으로 처리된다.

 

case 한 번 쓰고 break는 필수이다. break를 만나면 switch 중괄호를 탈출하는데, 만약 break가 없으면 case 실행후 다음 case로 넘어가게 된다. 

*스마트폰으로 php 코드를 짤 수 있는 앱이 있다. 교수님이 써보라고 하심

 

 


 

 

3. 반복문 - while

<?php
if($dirhandle = opendir('.')){
	while (false !== ($filename = readdir($dirhandle))){
		print $filename."<BR>";
	}
	closedir($dirhandle);
}
?>

위의 코드를 분석해보자. 

Q. If 문 조건 부분에 ==가 아닌 =인 이유?

-> if 문 조건 부분이 조건 판단이 아니기 때문이다. $dirhandle이라는 변수에 데이터를 할당해주고 있는 것. 

 

opendir() 함수는 괄호 안의 위치의 디렉토리 정보를 뽑아내는 함수이다. 위의 코드에서는 opendir('.')이 쓰였는데 . dot 하나는 현재 위치를 의미한다. 따라서 현재 위치의 디렉토리 정보를 뽑아내서 dirhandle 변수에 입력해주고 있는 것이다. 

변수를 단순 할당하는 건데 어떻게 if문의 조건 부분에 들어갔을까? opendir 함수로 디렉토리 정보를 뽑아낸다고 했는데 만약 dirhandle에 입력해줄 정보가 있으면 true, 정보가 없으면 false로 인식하기 때문이다.

 

만약 dirhandle에 할당된 정보가 있으면 true 명령문으로 이동한다. true 명령문에는 while 문이 있는데, 여기서 또 새로운 함수가 등장한다. readdir 이라는 함수는 한줄씩 읽어주는 함수이다. 따라서 filename 이라는 변수에 dirhandle에 있는 정보를 한 줄 읽어서 저장한 것이다. 위와 마찬가지로 filename에 저장해준게 있다면 true가 된다.

while문이 true이면 print $filename."<BR>";을 실행하게 된다. 여기서 filename 옆에 있는 . 은 연결연산자로 

파이썬으로 비유하면 print( filename + "\n") 이 코드를 실행하는 것이다.

이제 더이상 읽을 정보가 없으면 false로 while문을 탈출해서 closedir 함수를 실행하게 된다. closedir 함수는 디렉토리를 여는 정보를 닫는 것이다. 

 

while문 문법은 조금 낯설다... 많이 다뤄봐야겠다

위의 코드를 실행해봤더니 알드라이브에 넣어놨던 모든 파일의 이름이 쭉 나열 되었다.

 

설명이 길어서 슬라이드 캡쳐본을 첨부한다....

 

 

 


 

 

4. 반복문 - for

<?php
for($i=1 ; $i<5 ; $i++){
	print $i."회째의 반복입니다. <BR>";
}
?>

for문 역시 자바랑 문법이 되게 비슷해서 놀랐다. 근데 자바는 for (int i = 0; i<10 ; i++) 이런 식으로 선언했던 것 같은데 

( i라는 변수를 한 번만 선언하면 다음은 int i 없이도 그냥 사용할 수 있었는데 ) php는 계속 $를 달고 다녀야되나보다.. 좀 귀찮..

 

정리하면 for문의 형식은

for(초깃값 ; 조건 ; 스텝)

for 문은 가운데 조건이 false가 되면 반복문이 종료된다.

i++ 는 후위증감. 1을 누적시키는 것.

 

Q. step size를 1 말고 2,3,4,, 로 하는 방법은?

$ i++ : 1 씩 증가

$ i+=2 : 2 씩 증가

 

for 문 안에서 선언된 변수 i는 for문 안에서만 유효한 지역변수이다 (local variable)

 

나머지는 다음 포스팅에서 !!!

 

 

 

'프로그래밍 > php' 카테고리의 다른 글

MAC 으로 XAMPP / MySQL  (0) 2022.10.19
5주차 - 클래스와 객체  (0) 2022.10.12
php 기본문법 - 4주차 (2)  (0) 2022.09.28