[PHP] 타입, 상수, 변수

Dev_Honey·2022년 10월 7일
0

PHP

목록 보기
6/11
post-thumbnail

1. Type

1. 숫자

<?php 
echo 1
?>


1 이 출력 되는 것을 볼 수 있다!! 😁
숫자의 중요한 특성은 계산을 할 수 있다!

  • 덧셈
<?php 
echo 1+1
?>


이렇게 연산자를 이용하여 계산 가능하다 !

<?php 
echo  1+1;  
echo  2*2;
echo  8/2;
echo  3-1;
?>

결과값이 각각 2, 4, 4, 2 가 나온다.

숫자인지 문자인지 Type을 확인 가능한데,

<?php 
var_dump(6)
?>
// var_dump(value)의 내장함수를 이용하면 type을 알 수 있다.
// 6이라는 숫자의 타입을 확인해보면


이렇게 int(6)이라고 integer(정수) 6이라고 type이 명시된다.

2. 문자

<?php
echo var_dump(1234);
echo var_dump("1234");
?>


" " 안에 들어간 것은 문자열로 string이고 그냥 1234는 number로 Integer이다.
string(4)라고 나왔는데, 문자의 길이를 말한다.

<?php
echo var_dump(1234);
echo var_dump("1234");
echo "Hello World"."HI,there";
echo "abcd"." "."efgh";
?>

여기서 문자열을 붙일 때 +를 사용하는 것이 아니라, .(점)을 사용해야한다.
띄어쓰기할 때도, " " 공백을 더해주면 된다.

echo "그는 '안녕하세요' 라고 말했다";
echo "그는 \"안녕하세요\" 라고 말했다";
// 백슬러시 사용하거나, 작은 따옴표로 묶거나
// 백슬러시는 escaping기능을 가지고 있어, 
// 따옴표의 문자열 시작 또는 끝이라는 문법을 일시적으로 해제해주는 역할! 


2. 변수와 상수, 비교

1. 변수

변하는 수
= 은 같다의 의미가 아니라 대입 연산자이다.
PHP에서는 변수의 이름앞에 무조건 $ 표시를 붙인다.

<html>
<body>
<?php 
$a = 1;
echo $a+1; #2
echo "<br \>";
$a=2;
print $a+1; #3
?>
</body>
</html>

결과
echo와 print는 같은 의미로 보면된다.
php에서는 #은 #다음의 것은 프로그래밍적인 의미로 해석하지않는다. 즉, 주석을 말한다.
주석으로는 #, //,

/* */(얘는 범위를 주석으로 묶어버린다.)

변수로 문자열도 받아서 문자열을 합칠 수 있다.

<html>
<body>
<?php 
$first = "coding";
echo $first." everybody";
?>
</body>
</html>

결과

변수가 없다면

변수는 코드의 재활용성을 높여준다.
예를들어서 100에 10을 더하고, 10을 나눈 후에 다시 10을 빼고 거기에 10을 곱해야 한다고 치자. 그리고 각 단계마다 그 결과를 출력해야 한다면 코드는 아래와 같을 것이다.

<html>
<body>
<?php
echo 100+10;
echo '<br />';
echo (100+10)/10;
echo '<br />';
echo ((100+10)/10)-10;
echo '<br />';
echo (((100+10)/10)-10)*10;
echo '<br />';
?>
</body>
</html>

변수가 있다면

<html>
<body>
<?php
$a = 100;
$a = $a + 10;
print $a.'<br />';
$a = $a / 10;
print $a.'<br />';
$a = $a - 10;
print $a.'<br />';
$a = $a * 10 ;    
print $a.'<br />';
?>
</body>
</html>

즉, 프로그래밍을 효율적으로 하기위해서 변수가 필요하다.

2. 상수(Constant)

고정된 데이터 !

<html>
<body>
<?php
define('TITLE', 'PHP Tutorial');
// TITLE이 상수가 된다.
echo TITLE;
// 출력되는 값은 PHP Tutorial 이다.
define('TITLE', 'JAVA Tutorial');
//근데 여기서 에러가 날 것이다. 왜냐하면, TITLE이라는 상수는 이미 정의 되어서 값이 PHP Tutorial인데 다른 값을 주니 오류가 나는 것이다.
//그래서 다른 이름으로 정의를 해서 JAVA Tutorial이라는 값을 담아주어야한다.
// echo TITLE2;
?>
</body>
</html>

결과

그래서 다시 다른 상수명으로 정의를 해주면,

<html>
<body>
<?php
define('TITLE', 'PHP Tutorial');
// TITLE이 상수가 된다.
echo TITLE.'<br/>';
// 출력되는 값은 PHP Tutorial 이다.
define('TITLE2', 'JAVA Tutorial');
//근데 여기서 에러가 날 것이다. 왜냐하면, TITLE이라는 상수는 이미 정의 되어서 값이 PHP Tutorial인데 다른 값을 주니 오류가 나는 것이다.
//그래서 다른 이름으로 정의를 해서 JAVA Tutorial이라는 값을 담아주어야한다.
echo TITLE2;
?>
</body>
</html>

결과

이렇게 값을 다 출력할 수 있다.

  • 그래서 상수는 언제 사용하면될까??
    • 1번만 정의되면 변경이 불가한 특성때문에, 바뀌지않는 것을 정의할 때 사용하면 된다.(Javascript의 const a = value로 정의하는 것처럼 !)
    • 그리고 상수를 사용할 때는 대문자를 사용하는 것이 관습이다.

변수에 담긴 데이터 형을 검사

<html>
<body>
<?php
$a = 100;
echo gettype($a);
settype($a, 'double');
echo '<br />';
echo gettype($a);
?>
</body>
</html>

결과

var_dump와 비슷 하지만 var_dump는 데이터형에 대한 검사와 함께 출력까지 강제로 하기 때문에 활용도가 떨어진다.
settype은 첫번째 인자로 주어진 값을 두번째 인자에 해당하는 데이터 형으로 변경해준다.즉, 원하는 데이터 형으로 형변환 할 수 있다.

데이터의 형을 확인하는 내장함수(API)를 봐보자.
이 함수들은 return을 bool(True OR False)로 한다.
그래서 조건문에서 이 함수들을 활용하여 조건문을 만들 수도 있다.

  • is_ array
  • is_ bool
  • is_ callable
  • is_ double
  • is_ float
  • is_ int
  • is_ integer
  • is_ long
  • is_ null
  • is_ numeric
  • is_ object
  • is_ real
  • is_ resource
  • is_ scalar
  • is_ string

가변변수

variable variables. 가변변수는 변수의 이름을 변수로 변경 할 수 있는 기능이다.

<html>
<body>
<?php
$title = 'subject';
$$title = 'PHP tutorial';
echo $subject;
?>
</body>
</html>

위의 코드를 보면 변수 $title의 값이 subject이다.
그런데 5행에 나타나는 title에는 $가 두번 표시되어 있다. 이것은 문자열 'PHP tutorial'이 변수 $title의 값이 아니라 변수 $subject의 값이라는 의미다. 변수의 이름을 동적으로 만들 수 있다는 점은 PHP가 가진 유연함을 보여준다.

3. 비교

연산자

$a = 1
연산자란 값에 대해서 어떤 작업을 컴퓨터에게 지시하기 위한 기호인데 우리는 이미 연산자를 사용했다. 아래 예제 중에서 '='는 우항의 값인 1을 좌항의 변수 a에 대입하는 '대입 연산자'다

비교연산자

프로그래밍에서 비교란 주어진 값들이 같은지, 다른지, 큰지, 작은지를 구분하는 것을 의미한다. 이 때 비교 연산자를 사용하는데 비교 연산자의 결과는 true나 false 중의 하나다.
좌항과 우항을 비교
대입연산자 = 를 '같다'라고 해석하지 말것!
==(같다) , >=(크거나 같다) , <= (작거나 같다) , > (크다), < (작다), != (같지 않다)

비교연산자 " == "

//비교연산자 ==(같다)
<html>
<body>
<?php
echo "1==2 : ";
var_dump(1==2);           #false
echo '<br />';
echo "1==1 : ";
var_dump(1==1);           #true
echo '<br />';
echo '"one"=="two" : ';
var_dump("one"=="two");   #false
echo '<br />';
echo '"one"=="one" : ';
var_dump("one"=="one");   #true
echo '<br />';
?>
</body>
</html>

결과

비교연산자 " >= "

<html>
<body>
<?php
echo "10>=20 : ";
var_dump(10>=20);           #false
echo '<br />';
echo "10>=1 : ";
var_dump(10>=1);           #true
echo '<br />';
echo '10>=10 : ';
var_dump(10>=10);   #true
?>
</body>
</html>

결과

비교연산자 " > "

<html>
<body>
<?php
echo "10>20 : ";
var_dump(10>20);           #false
echo '<br />';
echo "10>1 : ";
var_dump(10>1);           #true
echo '<br />';
echo '10>10 : ';
var_dump(10>10);   #false
?>
</body>
</html>

결과

비교연산자 " != "

<html>
<body>
<?php
echo "1!=2 : ";
var_dump(1!=2);           #true
echo '<br />';
echo "1!=1 : ";
var_dump(1!==1);           #false
echo '<br />';
echo '"one"!="two" : ';
var_dump("one"!="two");   #true
echo '<br />';
echo '"one"!="one" : ';
var_dump("one"!="one");   #false
echo '<br />';
?>
</body>
</html>

결과


참조

생활코딩 PHP
https://opentutorials.org/course/3018/5103


profile
자습서 같은 공부 블로그 만들기!

0개의 댓글