@ operator은 expressions에만 유효합니다. 초보자를 위한 간단한 규칙은 다음과 같습니다. 어딘가에서 값을 얻을 수 있으면 값 앞에 @ 연산자를 추가하세요. 예를 들어 변수, 함수, include() 호출, 상수 등 앞에 배치할 수 있습니다. 함수나 클래스 정의 앞에 배치할 수 없으며 if 및 foreach와 같은 조건부 구조에서도 사용할 수 없습니다.
현재 "@" 오류 제어 연산자접두사는 스크립트 종료를 초래하는 심각한 오류의 오류 보고도 비활성화합니다. 즉, 존재하지 않거나 잘못된 유형의 함수 호출 전에 "@"를 사용하여 오류 메시지를 표시하지 않으면 스크립트는 이유를 표시하지 않고 종료됩니다.
$의 경우 이것이 우리의 핵심 문제입니다
기본 형식:
function &find_var($param) //这里用&在对象前面,作用为声明 { /* ...code... */ return $found_var; } $foo =& find_var($bar); //这里用&,作用为联系变量 $foo->x = 2; //赋值给函数
예:
function &test() { static $b=0;//申明一个静态变量 $b=$b+1; echo $b; return $b; } $a=test();//这条语句会输出$b的值为1, $a=5; $a=test();//这条语句会输出$b的值为2 ,因为没有引用返回,$a=5,不对对象起赋值作用 $a=&test();//这条语句会输出$b的值为3 ,成功引用返回,下面的代码起作用 $a=5; $a=test();//这条语句会输出$b的值为6
아래 설명:
이런 방식으로 $a=test()는 실제로 참조 반환을 얻지 못합니다. function 은 일반적인 함수 호출과 다르지 않습니다. 이유는 다음과 같습니다. 이는 PHP의 규정입니다.
php에서는 $a=&test();를 통해 함수의 참조 반환을 얻도록 규정합니다.
참조 반환이 무엇인지에 대해(PHP 설명서에 따르면 참조 반환은 참조가 바인딩되어야 하는 변수를 찾기 위해 함수를 사용하려는 경우에 사용됩니다.)
위의 예를 사용하여 설명합니다.
$a=test ( ) 메소드는 함수의 값을 $a에 할당할 뿐이며 $a에 대한 변경 사항은 $a=&test()를 통해 함수를 호출할 때 해당 함수의 메모리 주소에 영향을 주지 않습니다. $b를 반환하는 $b 변수와 $a 변수의 메모리 주소는 동일한 위치로 이동하여 동일한 효과를 생성합니다($a=&b;). 따라서 $a 값을 변경하면 $a 값도 변경됩니다. $b의 값이므로 $a=&test();
$a=5;
를 실행한 후 $b의 값은 5가 됩니다...
그런 다음 PHP 함수 앞에 앰퍼샌드를 추가하세요. 그렇죠?
php 변수 앞의 앰퍼샌드 기호는 무엇을 의미하나요? 먼저 예를 살펴보겠습니다.
$foo = 321; $bar = &$foo; $bar = 123; print $foo; //那么输出的结果将会是什么呢
참고: 이름이 지정된 변수만 주소별로 할당할 수 있습니다. 즉, $bar 값을 변경하면 $foo 값도 변경됩니다.
$_GET[1] = 1; function &a() { $a = $_GET[1]; return $a; } $x =& a(); $x = 'MoontoC'; echo $_GET[1]; // 此时这里会显示 MoontoC, 而不是最初赋值的1
위 내용은 PHP에서 함수와 변수 앞에 @ 및 $ 기호를 추가하는 것의 차이점에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!