PHP Tutorial(2)

HackBeom·2022년 10월 28일
0

php_study

목록 보기
2/3

연산자

PHP는 연산자를 다름 그룹으로 나눕니다.

  • 산술 연산자 (Arithmetic operators)
  • 할당 연산자 (Assignment operators)
  • 비교 연산자 (Comparison operators)
  • 증가/감소 연산자 (Increment/Decrement operators)
  • 논리 연산자 (Logical operators)
  • 문자열 연산자 (String operators)
  • 배열 연산자 (Array operators)
  • 조건부 할당 연산자 (Conditional assignment operators)

산술 연산자

일반적인 산술 연산을 수행하기 위해 숫자 값과 함께 사용됩니다.

<?php
  $x = 10;
  $y = 5;

  echo "<h4> 변수x의 값은 10 변수 y의 값은 5 입니다. </h4>";

  echo " $x$y 의 덧셈은 ".$x + $y." 입니다. <br>";
  echo " $x$y 의 뺄셈은 ".$x - $y." 입니다. <br>";
  echo " $x$y 의 곱셈은 ".$x * $y." 입니다. <br>";
  echo " $x$y 의 나눗셈은 ".$x / $y." 입니다.<br>";
  echo " $x$y 의 나눈값의 나머지는 ".$x % $y." 입니다.<br>";
  echo " $x$y$x$y 제곱은 ".$x ** $y." 입니다.<br><br>";
?>

할당 연산자

<?php
$z = 100; // x = y
  $c = 200;

  $var = $z + $c;
  $var2 = $z - $c; // 등 이 외에도 다양한 경우가 많지만 같은 맥락이니 생략
?>

비교 연산자

<?php
  // 비교 연산자
  $a = 500;
  $b = "500";
  $f = 200;

  var_dump($a == $b); // a변수와 b변수는 데이터 타입은 달라도 값이 같기 때문에 true
  echo "<br>";

  var_dump($a === $c); // a변수와 c변수는 데이터 타입과 값이 모두 동일 해야 되지만 동일하지 않기 때문에 flase
  echo "<br>";

  var_dump($a != $f); // a변수와 f변수는 서로 같지 않음으로 true
  echo "<br>";

  var_dump($a > $f); // ture
  echo "<br>";

  var_dump($a < $f); // false
  echo "<br>";

  var_dump($a >= $f);// 같거나 크다
  echo "<br>";

  var_dump($a <= $f);//  작거나 같다
  echo "<br>";

  var_dump($a <=> $f); // 우주선 연산자라고도 부르며
  echo "<br>";         //두 값을 비교하여 선행 피연산자가 작으면 음수, 같으면 0, 크면 1을 출력합니다.'
 ?>

증가/감소 연산자

<?php
  $a = 100;

  echo $a; // 원래값 출력
  echo "<br>";
  echo ++$a; // 증가 후 값 반환
  echo "<br>";
  echo $a++; // 반환 후 증가

  $b = 50;

  echo "<br>";
  echo $b; // 원래값 출력
  echo "<br>";
  echo --$b; // 감소 후 반환
  echo "<br>";
  echo $b--; // 반환 후 감소
?>

논리 연산자

<?php
  $var = 200;
  $cost = 50;

  // 해당 코드는 조건식을 만족할 경우 alert으로 Ture 출력 조건식에 맞지 않을 경우 False 출력하는 코드이다.

  if ($var == 200 and $cost == 50) // 두 조건중 두가지 모두 만족해야 ture를 출력합니다.
  {
    echo "<script>alert('Ture');</script>";
  }
  echo "<script>alert('False');</script>";

  if ($var == 200 or $cost == 50) // 두 조건중 하나라도 만족한다면 ture를 출력합니다.
  {
    echo "<script>alert('Ture');</script>";
  }
  echo "<script>alert('False');</script>";

  if ($var == 200 xor $cost == 55) // 둘중 하나라도 참이면 ture 하지만 둘다 참은 아니다.
  {
    echo "<script>alert('Ture');</script>";
  }
  echo "<script>alert('False');</script>";

  if ($var == 200 && $cost == 50) // 두개의 조건을 모두 만족해야 ture 입니다.
  {
    echo "<script>alert('Ture');</script>";
  }
  echo "<script>alert('False');</script>";

?>

문자열 연산자

<?php 
	$var = "Kim";
	$var2 = " HackBeom";
	echo $var . $var2;
    // 해당 코드 말고도 여태까지 있는 코드들에서 많이 사용 했음으로 참조 
?>

배열 연산자

<?php

$Kim = array("A" => "red", "B" => "green");
$Hack = array("C" => "blue", "D" => "yellow");
$Beom = array("A" => "red", "B" => "green");
print_r($Kim + $Hack); echo "<br>"; // kim 배열과 HackBeom 배열 모두 출력

var_dump($Kim == $Hack); echo "<br>"; // 배열값이 서로 다르기 때문에 flase 출력

var_dump($Kim === $Beom); echo "<br>"; // 배열값이 서로 같기 때문에 ture 출력

var_dump($Kim != $Hack); echo "<br>"; // 배열 값이 서로 다르면 true 출력

var_dump($Kim <> $Hack); echo "<br>"; // 서로 값이 같지 않으면 true 출력

var_dump($Kim !== $Hack); echo "<br>"; // 서로 값이 동일 하지 않으면 ture를 출력
?>

조건부 할당 연산자

<?php
   //$x 값을 반환합니다.
   //expr1 = TRUE인 경우 $x 값은 expr2입니다.
   //expr1 = FALSE인 경우 $x의 값은 expr3입니다.


   // if empty($user) = TRUE, set $status = "anonymous"
   // 빈 경우(사용자) = TRUE, $status = "filename"을 설정합니다

   echo $status = (empty($user)) ? "anonymous" : "logged in";
   echo("<br>");


   // if empty($user) = FALSE, set $status = "logged in"
   // 비어 있는 경우(사용자) = FALSE, $status = "include in"을 설정합니다.

   $user = "John Doe";
   echo $status = (empty($user)) ? "anonymous" : "logged in";


   // code 해석: $user에 입력값이 있다면 logged in 반환
   // $user에 입력값이 없다면 anonymous 출력
?>

<?php
   // -> OR 처리랑 비슷하다고 보면 됨
   echo $user = $_GET["user"] ?? "anonymous";
   echo("<br>");

   // -> 변수 $color는 $color가 없거나 null인 경우 "red"입니다.
   echo $color = $color ?? "red";
?>

if...else...elseif문

조건문

  • if명령문 - 하나의 조건이 참이면 일부 코드를 실행합니다.
  • if...else명령문 - 조건이 참이면 일부 코드를 실행하고 해당 조건이 거짓이면 다른 코드를 실행합니다.
  • if...elseif...else명령문 - 두 개 이상의 조건에 대해 다른 코드를 실행합니다.
  • switchstatement - 실행할 많은 코드 블록 중 하나를 선택합니다.

if문

Syntax
if (condition) {
code to be executed if condition is true;
}

<?php
  $data = 10;

  if ($data > "10")
  {
    echo "True <br><br>";
  }
  else {
    echo "False <br><br>";
  }

 $cost = 100;

 if ($cost < 1000)
 {
   echo "비용이 1000 이하 제품을 추천합니다.";
 }
 elseif ($cost == 1000)
 {
   echo "비용이 1000인 제품을 추천합니다.";
 }
 else
 {
   echo "비용이 1000이상인 제품을 추천합니다.";
 }

?>

스위치 문

입력값을 받는 폼

<!DOCTYPE html>
<html lang="ko" dir="ltr">
  <head>
    <meta charset="utf-8">
    <title></title>
  </head>
  <body>
    <form method="GET" action="a.php">
      입력: <input type="text" name="name"/><br/>
            <input type="submit" />
    </form>
  </body>
</html>

<?php

  $named = $_GET["name"];

  switch ($named)
  {
    case "red":
      echo "Your favorite color is red!";
      break;
    case "blue":
      echo "Your favorite color is blue!";
      break;
    case "green":
      echo "Your favorite color is green!";
      break;
    default:
      echo "Your favorite color is neither red, blue, nor green!";
  }
?>

입력 폼에 red 입력 시 해당 스위치문에 적용되서 정상적으로 출력된다.

루프

C언어로 따지자면 반복문 같은 개념

  • while- 지정된 조건이 참인 동안 코드 블록을 반복합니다.
  • do...while- 코드 블록을 한 번 반복한 다음 지정된 조건이 참인 동안 루프를 반복합니다.
  • for- 지정된 횟수만큼 코드 블록을 반복합니다.
  • foreach- 배열의 각 요소에 대한 코드 블록을 반복합니다.

While문

Syntax
while (condition is true) {
code to be executed;
}

<?php
$KHB = 0;

while($KHB <= 5) { // 조건 동안 반복하겠다.
  echo "KHB: $KHB <br>";
  $KHB++; // 조건 끝날때마다 값 1씩 증가
}
?>

do While문

~~ 동안에 조건을 만족하는 동안 반복 합니다.

<?php
$KHB = 0;

do {
  echo "Number: $KHB <br>";
  $KHB++;
} while ($KHB <= 10);

For문

<?php

for ($khb = 0; $khb <= 13; $khb++) { // 변수의 값을 0으로 초기화, 조건식, 증감값
  echo "10까지 값을 증가합니다. : $khb <br>";
}
?>

foreach Loop

foreach루프 - 배열의 각 요소에 대한 코드 블록을 반복합니다 .

<?php
$employee_list = array('Programmer' => 'Edward', 'Designer' => 'Alex');

foreach($employee_list as $row)
{
    echo $row."<br/>"; // 값만 가져오는 경우
}




$employee_list = array('Programmer' => 'Edward', 'Designer' => 'Alex');

foreach($employee_list as $key => $value)
{
    echo $key." : ".$value."<br/>";
} // key 와value 둘다 가져오는 경우
?>

Break

<?php
for ($x = 0; $x < 10; $x++) { // 0으로 초기화, 10전까지 계속 증가 
  if ($x == 4) {  // 변수 값이 4가 되면 루프 멈춤
    break;
  }
  echo "The number is: $x <br>";
}
?>

Continue

<?php
for ($x = 0; $x < 10; $x++) {
  if ($x == 4) { // 변수 값이 4가 되더라도 계속 진행
    continue;
  }
  echo "The number is: $x <br>";
}

?>

함수

사용자 정의 함수

Syntax: function functionName() {
code to be executed;
}

<?php
function KHB()
{
  echo "Hello KimHackBeom";
}

KHB();
?>

함수 인수

<?php
function kimHackBeom($fname) {
  echo "$fname Refsnes.<br>";
}

kimHackBeom("김사수");
kimHackBeom("김수시");
kimHackBeom("박현식");
kimHackBeom("금길두");
kimHackBeom("박금도");
?>

얼마든지 함수 이름 + 인수 값 추가로 계속 늘릴 수 있다.

<?php
function kimHackBeom2($fname, $year) 
{
  echo "$fname Refsnes. Born in $year <br>";
}

kimHackBeom2("김사수", "1975");
kimHackBeom2("박금도", "1995");
kimHackBeom2("서길도", "1990");

?>

PHP is a Loosely Typed Language

<?php
  function KimHackBeom(int $a, int $b)
  {
    return $a + $b;
  }
  echo KimHackBeom(5, "10");
  // 우리가 원하느 값 숫자 5 출력후 문자 "10" 출력
  // 출력되는 값 => 15
  // why? php는 값에 따라 데이터 유형을 자동으로 연결하기 때문에 문자 10이 int 10으로 바뀌고 5 + 10 의 반환값이 출력되기 때문에 15가 출력됩니다.

?>

<?php declare(strict_types=1);
  function KimHackBeom(int $a, int $b)
  {
    return $a + $b;
  }
  echo KimHackBeom(5, "10");
  //반면 strict 옵션을 활성화 시 서로 데이터 유형이 맞지 않아 에러가 발생합니다.
?>
<?php declare(strict_types=1);

function addNumbers(int $a, int $b) {
  return $a + $b;
}
echo addNumbers(5, "5 days");
?>

0개의 댓글