$변수명 = 데이터(값);
$var = 'Hello World!';
echo $var; // 출력: 'Hello World!'
// 같은 스코프 내에서 변수명이 중복되면 덮어쓰기 발생
$var = 90;
$var = 100;

// 대소문자를 구분
$Var = '대문자 V가 있는 변수';

echo $var; // 출력: 100
echo $Var; // 출력: '대문자 V가 있는 변수'
$name = '홍길동';     // 올바른 변수명
$user_1 = 25;        // 올바른 변수명
$age = 30;           // 올바른 변수명

$my-name = '테스트';  // 잘못된 변수명, '-' 포함
$user name = '테스트'; // 잘못된 변수명, 공백 포함
$age1 = 25;   // 올바른 변수명
$_age = 30;   // 올바른 변수명

$1stPlace = 1; // 잘못된 변수명, 숫자로 시작
/* 잘못 사용하는 경우 */
$class = '테스트';
$function = '함수';
$echo = '출력';
$ = 10; // 잘못된 변수명
// 선언과 동시에 값 할당
$var = 10;
echo $var; // 출력: 10

// 데이터 타입별 초기값 지정
$empty_string = '';
$empty_array = [];
$zero = 0;

// 필요할 때 null 할당
$result = null;

if (true) {
    $result = '값이 할당됨';
}

echo $result; // 출력: 값이 할당됨

// 값 없이 단독 선언 시(오류 발생)
$no_value;
echo $no_value; // Warning: Undefined variable $function 
$a[] = 'test'; // $a는 이전에 선언되지 않았지만 자동으로 배열로 초기화됨. 에러가 발생하지 않음
var_dump($a); // 출력: array(1) {[0]=> string(4) "test" }
/* 하나의 변수 설정을 해제 */
$a = 10;         // 변수 설정
var_dump($a);    // int(10)

unset($a);       // 변수 해제
var_dump($a);    // Warning: Undefined variable $a

/* 여러 개의 변수 설정을 해제 */
$x = 1;
$y = 2;
$z = 3;

unset($x, $y);   // $x와 $y 해제
var_dump($x);    // Warning: Undefined variable $x
var_dump($y);    // Warning: Undefined variable $y
var_dump($z);    // int(3) - $z는 그대로 존재