티스토리 뷰
PHP에서 변수는 달러 기호 다음에 변수 이름으로 표시됩니다. 변수 이름은 대소문자를 구분합니다.
변수 이름은 PHP의 다른 레이블과 동일한 규칙을 따릅니다. 유효한 변수 이름은 문자 또는 밑줄로 시작하고 그 뒤에 임의의 수의 문자, 숫자 또는 밑줄이 옵니다. 정규 표현식으로 다음과 같이 표현됩니다. ^[a-zA-Z_\x80-\xff][a-zA-Z0-9_\x80-\xff]*$
참고 : 여기서 우리의 목적을 위해 문자는 az, AZ이고 128에서 255까지의 바이트( 0x80-0xff)입니다.
참고 : 는 할당할 수 없는 특수 변수입니다. PHP 7.1.0 이전에는 간접 할당(예: 변수 변수 사용 )이 가능했습니다. $this
Userland Naming Guide 도 참조하십시오 .
변수 관련 함수에 대한 정보는 변수 함수 참조 를 참조하십시오 .
$var = 'Bob';
$Var = 'Joe';
echo "$var, $Var"; // outputs "Bob, Joe"
$4site = 'not yet'; // invalid; starts with a number
$_4site = 'not yet'; // valid; starts with an underscore
$täyte = 'mansikka'; // valid; 'ä' is (Extended) ASCII 228.
?>
기본적으로 변수는 항상 값으로 할당됩니다. 즉, 변수에 표현식을 할당하면 원래 표현식의 전체 값이 대상 변수에 복사됩니다. 예를 들어, 한 변수의 값을 다른 변수에 할당한 후 해당 변수 중 하나를 변경해도 다른 변수에는 영향을 미치지 않습니다. 이러한 종류의 할당에 대한 자세한 내용은 표현식 장을 참조하십시오 .
PHP는 또한 변수에 값을 할당하는 또 다른 방법을 제공 합니다 . 이것은 새 변수가 단순히 원래 변수를 참조(즉, "에 대한 별칭이 됨" 또는 "가리키는")한다는 것을 의미합니다. 새 변수에 대한 변경 사항은 원본에 영향을 미치며 그 반대의 경우도 마찬가지입니다.
참조로 할당하려면 할당되는 변수(소스 변수)의 시작 부분에 앰퍼샌드(&)를 추가하기만 하면 됩니다. 예를 들어 다음 코드 스니펫은 ' My name is Bob'를 두 번 출력합니다.
$foo = 'Bob'; // Assign the value 'Bob' to $foo
$bar = &$foo; // Reference $foo via $bar.
$bar = "My name is $bar"; // Alter $bar...
echo $bar;
echo $foo; // $foo is altered too.
?>
한 가지 중요한 점은 명명된 변수만 참조로 할당할 수 있다는 것입니다.
$foo = 25;
$bar = &$foo; // This is a valid assignment.
$bar = &(24 * 7); // Invalid; references an unnamed expression.
function test()
{
return 25;
}
$bar = &test(); // Invalid.
?>
PHP에서 변수를 초기화할 필요는 없지만 매우 좋은 방법입니다. 초기화되지 않은 변수는 사용되는 컨텍스트에 따라 해당 유형의 기본값을 갖습니다. 부울 기본값은 false, 정수 및 부동 소수점 기본값은 0, 문자열(예: echo 에서 사용 )은 빈 문자열로 설정되고 배열은 빈 배열이 됩니다. .
예제 #1 초기화되지 않은 변수의 기본값
// Unset AND unreferenced (no use context) variable; outputs NULL
var_dump($unset_var);
// Boolean usage; outputs 'false' (See ternary operators for more on this syntax)
echo($unset_bool ? "true\n" : "false\n");
// String usage; outputs 'string(3) "abc"'
$unset_str .= 'abc';
var_dump($unset_str);
// Integer usage; outputs 'int(25)'
$unset_int += 25; // 0 + 25 => 25
var_dump($unset_int);
// Float/double usage; outputs 'float(1.25)'
$unset_float += 1.25;
var_dump($unset_float);
// Array usage; outputs array(1) { [3]=> string(3) "def" }
$unset_arr[3] = "def"; // array() + array(3 => "def") => array(3 => "def")
var_dump($unset_arr);
// Object usage; creates new stdClass object (see http://www.php.net/manual/en/reserved.classes.php)
// Outputs: object(stdClass)#1 (1) { ["foo"]=> string(3) "bar" }
$unset_obj->foo = 'bar';
var_dump($unset_obj);
?>
초기화되지 않은 변수의 기본값에 의존하는 것은 동일한 변수 이름을 사용하는 다른 파일에 한 파일을 포함하는 경우 문제가 됩니다. E_NOTICE 레벨 오류는 초기화되지 않은 변수로 작업하는 경우 발생하지만 초기화되지 않은 배열에 요소를 추가하는 경우에는 발생하지 않습니다. isset() 언어 구성을 사용하여 변수가 이미 초기화되었는지 감지할 수 있습니다.
출처: https://www.php.net/manual/en/language.variables.basics.php