생활코딩 php 조건문, 반복문 + 인프런 깃허브 무료 강의
▶ 조건문 형식(conditional statements)
컴퓨터의 기본 동작은 시간 순서에 따라. 아무리 복잡한 프로그램이라도 시간 순서에 따라 실행된다. (그리고 조건문 반복문으로 다 표현할 수 있다.)
if (expr) {
statement
}
소괄호 안은 표현식->불리언 데이터 타입이 들어간다. 중괄호 안은 실행돼야할 코드가 들어간다.
표현식 부분이 false면 중괄호 안은 실행되지 않는다.
echo '1<br>';
if(false){
echo '2-1<br>';
} else {
echo '2-2<br>';
}
echo '3<br>';
뒤에 else가 붙는다면 표현식 안이 false일 때 첫번째 중괄호는 실행되지 않고 else 이후 중괄호가 실행된다. 이 경우 출력되는건 1, 2-2, 3
if문 값이 무엇이냐에 따라 제어되고 있다.
▶ 조건문 활용
저번에 했던 페이지를 활용한다.
<h1><a href="index.php"></a>WEB</h1>
<ol>
<li><a href="index.php?id=HTML">HTML</a></li>
<li><a href="index.php?id=CSS">CSS</a></li>
<li><a href="index.php?id=JavaScript">JavaScript</a></li>
</ol>
<h2>
<?php
echo $_GET['id']
?>
</h2>
<?php
echo file_get_contents("data/".$_GET['id']);
?>
아무것도 누르지 않은 index.php 상태에서 WEB을 누르면 welcome이란 글자가 나타나게 한다. 조건문을 활용해야 한다. id값이 있다면 id가 뜨게 하고 없다면 welcome이 떠야 함
추천 검색어 - php check value exists
isset을 확인, 예시도 봐준다.
$var = '';
// This will evaluate to TRUE so the text will be printed.
if (isset($var)) {
echo "This var is set so I will print.";
}
$var는 빈 문자지만 어쨌든 변수값이 세팅되어있기 때문에 true로 나온다.
$a = "test";
$b = "anothertest";
var_dump(isset($a)); // TRUE
var_dump(isset($a, $b)); // TRUE
unset ($a);
var_dump(isset($a)); // FALSE
var_dump(isset($a, $b)); // FALSE
맨밑은 왜 false인지 처음에 이해를 못했는데 $a,$b를 둘 다 체크하기 때문에 a값이 지워졌으니 false로 뜬다.
처음으로 돌아가서 isset을 활용해 id 있냐 없냐를 적자면 이렇다.
if(isset($_GET['id'])) {
// $_GET['id']값이 있다면(isset) 없다면 false
echo $_GET['id'];
} else {
echo "Welcome";
}
<?php
if(isset($_GET['id'])) {
echo file_get_contents("data/".$_GET['id']);
} else {
echo "Hello, PHP";
}
?>
결과
내가 가진 애플리케이션이 주어진 상황에 따라 보다 섬세하게 구동될 수 있게 됐다.
▶ 반복문
프로그래머들은 데이터가 바뀌었다고 뚜껑을 열고 그 안의 프로그램을 바꿔야하는 상황을 부끄럽게 여긴다.
디렉토리에 파일을 추가하면 알아서 php가 인식해서 태그를 프로그래밍적으로 생성해주는 방법이 반복문을 통해 이뤄진다.
문법이 중요하다기보단 뭘하고자 하는 가를 논리적으로 설명할 수 있는 게 제일 중요하다.
조건문 예시 페이지에서 php가 반복해서 해야할 목표
1. data 디렉토리에 있는 파일의 목록을 가져와야한다.
2. 파일의 목록 하나하나를 li와 a 태그를 이용해서 글 목록을 만들어야 한다.
이걸 하기 위해 반복문을 배운다.
▶ 반복문 문법(php loop statements)
while (expr)
statement
조건이 만족되는 동안은 statement가 반복 실행된다. 반드시 끝나는 지점을 설정해줘야 한다. 무한루프는 심각한 결함이다.
-> expr에 맞게 statement가 실행되고 마지막 statement까지 실행된 후 다시 expr을 보는데 그게 true면 또 실행되고 다시 봤는데 false로 돼있다? 그럼 더 이상 statement가 실행되지 않는다.
expression과 statement의 차이
expression은 값이 온다. 또는 최종적으로 그게 값이 되는 것이 온다.
ex) 1(값) , 1+1(최종적으로 2라는 값이 됨)
근데 예를 들어 보면 앞에서 배운 if문 자체는 값이 되지 않는다. 이런 걸 statement라고 한다.
echo '1<br>';
$i = 0;
while ($i < 3) {
echo '2<br>';
$i = $i + 1;
}
echo '3<br>';
결과값
1
2
2
2
3
i = 0 은 참이니까 2찍고, i = i + 1이라 1돼서 또 실행해서 2 찍고, 반복하다가 i = 3이되면 3보다 작다는 말이 성립되지 않으니 반복문에서 탈출해서 3을 찍어냄
반복문은 시간 순서에 따라 코드가 실행되는데 조건을 만족하는 동안에 중괄호 안을 반복적으로 실행될 수 있게 하기 때문에 제어문이라 할 수 있다.
조건문 반복문은 인간사에 일어나는 대부분의, 어쩌면 모든 일에 대한 가장 작은 단위라 볼 수 있다.
배열의 형식은 내일
조건문에서 isset 공부할 때 궁금했던 점. isset에 2개가 들어가있으면 둘 다 참이어야 참으로 출력한다.
조건문, 반복문 개념은 몇 번 들어서 쉽게 들을 수 있을 거라고 생각했는데 아니었다. 다시 들어도 새로운 느낌이라 또 공부했다.
강의 중에 직접적으로 이유를 언급하진 않았으나 바로 전의 다른 문제를 보고 유추해서 이유를 깨달았다.
반복 학습만이 답이다.
평일이라 굉장히 피곤하다.. 그래도 공부해서 뿌듯하다. 얼른 응용해보고 싶다. 강의진도는 느리더라도 내일부터는 혼자 생각하는 시간을 늘려봐야겠다.
인프런 깃허브 무료 강의도 기록할 수 있다면 좋을 텐데 저작권이 어떻게 되는지 몰라서 듣기만 하고 못 올린다. 이번 주 안에 문의해보고싶다.