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명령문 - 하나의 조건이 참이면 일부 코드를 실행합니다.
- if...else명령문 - 조건이 참이면 일부 코드를 실행하고 해당 조건이 거짓이면 다른 코드를 실행합니다.
- if...elseif...else명령문 - 두 개 이상의 조건에 대해 다른 코드를 실행합니다.
- switchstatement - 실행할 많은 코드 블록 중 하나를 선택합니다.
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- 배열의 각 요소에 대한 코드 블록을 반복합니다.
Syntax
while (condition is true) {
code to be executed;
}
<?php
$KHB = 0;
while($KHB <= 5) { // 조건 동안 반복하겠다.
echo "KHB: $KHB <br>";
$KHB++; // 조건 끝날때마다 값 1씩 증가
}
?>
~~ 동안에 조건을 만족하는 동안 반복 합니다.
<?php
$KHB = 0;
do {
echo "Number: $KHB <br>";
$KHB++;
} while ($KHB <= 10);
<?php
for ($khb = 0; $khb <= 13; $khb++) { // 변수의 값을 0으로 초기화, 조건식, 증감값
echo "10까지 값을 증가합니다. : $khb <br>";
}
?>
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 둘다 가져오는 경우
?>
<?php
for ($x = 0; $x < 10; $x++) { // 0으로 초기화, 10전까지 계속 증가
if ($x == 4) { // 변수 값이 4가 되면 루프 멈춤
break;
}
echo "The number is: $x <br>";
}
?>
<?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
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");
?>