>  기사  >  백엔드 개발  >  PHP 변수의 기본 소개

PHP 변수의 기본 소개

伊谢尔伦
伊谢尔伦원래의
2016-11-24 13:49:22901검색

PHP의 변수는 달러 기호와 변수 이름으로 표시됩니다. 변수 이름은 대소문자를 구분합니다.

변수 이름은 PHP의 다른 태그와 동일한 규칙을 따릅니다. 유효한 변수 이름은 문자나 밑줄로 시작하고 그 뒤에 문자, 숫자 또는 밑줄이 옵니다. 일반 정규식에 따르면 '[a-zA-Z_x7f-xff][a-zA-Z0-9_x7f-xff]*'로 표현됩니다.

참고: 여기에 언급된 문자는 a-z, A-Z 및 127~255(0x7f-0xff)의 ASCII 문자입니다.

참고: $this는 값을 할당할 수 없는 특수 변수입니다.

cb066072a05ab5b732c9d68d6beb1439

변수는 기본적으로 항상 값으로 할당됩니다. 즉, 표현식의 값이 변수에 할당되면 원래 표현식 전체의 값이 대상 변수에 할당됩니다. 이는 예를 들어 한 변수의 값이 다른 변수에 할당될 때 한 변수의 값을 변경해도 다른 변수에 영향을 미치지 않는다는 것을 의미합니다.

PHP는 변수에 값을 할당하는 또 다른 방법인 참조 할당도 제공합니다. 즉, 새 변수는 원래 변수를 단순히 참조(즉, "별칭" 또는 "가리키는") 것입니다. 새 변수를 변경하면 원래 변수에 영향을 미치며 그 반대의 경우도 마찬가지입니다.

참조 할당을 사용하려면 할당할 변수(소스 변수) 앞에 & 기호를 추가하면 됩니다. 예를 들어, 다음 코드 조각은 "My name is Bob"을 두 번 인쇄합니다.

유의해야 할 중요한 점 중 하나는 명명된 변수만 참조로 할당할 수 있다는 것입니다.

<?php
$foo = &#39;Bob&#39;;              // 将 &#39;Bob&#39; 赋给 $foo
$bar = &$foo;              // 通过 $bar 引用 $foo
$bar = "My name is $bar";  // 修改 $bar 变量
echo $bar;
echo $foo;                 // $foo 的值也被修改
?>

PHP에서는 변수를 초기화할 필요는 없지만, 변수를 초기화하는 것은 좋은 습관입니다. 초기화되지 않은 변수는 해당 유형에 대한 기본값을 갖습니다. 부울 변수는 기본값이 FALSE이고, 정수 및 부동 소수점 변수는 기본값이 0이고, 문자열 변수(예: echo에 사용되는 변수)는 기본값이 빈 문자열이고 배열 변수의 기본값은 빈 배열입니다.

<?php
$foo = 25;
$bar = &$foo;      // 合法的赋值
$bar = &(24 * 7);  // 非法; 引用没有名字的表达式
 
function test()
{
  return 25;
}
$bar = &test();    // 非法
?>
예제 #1 초기화되지 않은 변수의 기본값

초기화되지 않은 변수의 기본값에 의존하는 것은 경우에 따라 문제가 될 수 있습니다. 예를 들어 한 파일을 다른 파일에 포함시키면 동일한 변수 이름이 발생합니다. . 또한 Register_globals를 켜는 것은 주요 보안 위험입니다. 초기화되지 않은 변수를 사용하면 E_NOTICE 오류가 발생하지만 초기화되지 않은 배열에 요소를 추가하면 오류가 발생하지 않습니다. isset() 언어 구성을 사용하여 변수가 초기화되었는지 여부를 감지할 수 있습니다.

<?php
// Unset AND unreferenced (no use context) variable; outputs NULL
var_dump($unset_var);
 
// Boolean usage; outputs &#39;false&#39; (See ternary operators for more on this syntax)
echo($unset_bool ? "true\n" : "false\n");
 
// String usage; outputs &#39;string(3) "abc"&#39;
$unset_str .= &#39;abc&#39;;
var_dump($unset_str);
 
// Integer usage; outputs &#39;int(25)&#39;
$unset_int += 25; // 0 + 25 => 25
var_dump($unset_int);
 
// Float/double usage; outputs &#39;float(1.25)&#39;
$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 = &#39;bar&#39;;
var_dump($unset_obj);
?>

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.