21.12.20

future_s·2021년 12월 20일
0

php

목록 보기
6/10

학습 내용

생활코딩 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

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을 찍어냄

반복문은 시간 순서에 따라 코드가 실행되는데 조건을 만족하는 동안에 중괄호 안을 반복적으로 실행될 수 있게 하기 때문에 제어문이라 할 수 있다.

조건문 반복문은 인간사에 일어나는 대부분의, 어쩌면 모든 일에 대한 가장 작은 단위라 볼 수 있다.

배열의 형식은 내일

어려운 내용

  1. 조건문에서 isset 공부할 때 궁금했던 점. isset에 2개가 들어가있으면 둘 다 참이어야 참으로 출력한다.

  2. 조건문, 반복문 개념은 몇 번 들어서 쉽게 들을 수 있을 거라고 생각했는데 아니었다. 다시 들어도 새로운 느낌이라 또 공부했다.

해결 방법

  1. 강의 중에 직접적으로 이유를 언급하진 않았으나 바로 전의 다른 문제를 보고 유추해서 이유를 깨달았다.

  2. 반복 학습만이 답이다.

느낀 점

평일이라 굉장히 피곤하다.. 그래도 공부해서 뿌듯하다. 얼른 응용해보고 싶다. 강의진도는 느리더라도 내일부터는 혼자 생각하는 시간을 늘려봐야겠다.

인프런 깃허브 무료 강의도 기록할 수 있다면 좋을 텐데 저작권이 어떻게 되는지 몰라서 듣기만 하고 못 올린다. 이번 주 안에 문의해보고싶다.

profile
미래는 현재의 내가 만들어간다

0개의 댓글