PHP와 C의 가변 스코프 차이: 블록 스코프가 완전히 같지는 않습니까?
다음 PHP 코드가 출력됩니다.3
.
function main() {
if (1) {
$i = 3;
}
echo $i;
}
main();
그러나 다음의 C 코드는 컴파일 오류를 일으킬 것입니다.
void main() {
if (1) {
int i = 3;
}
printf("%d", i);
}
그럼 PHP의 변수는 블록 범위가 엄격하지 않은 건가요?PHP에서 내부 블록에 정의된 변수는 외부 블록에 사용할 수 있습니까?
PHP는 다음과 같은 기능 범위 - 제어 구조만을 가지고 있습니다.if
새로운 범위를 도입하지 마십시오.그러나 선언하지 않은 변수를 사용해도 상관이 없습니다.$i
밖에서는 존재하지 않을 것입니다main()
또는 if 진술이 실패하더라도 자유롭게 반향할 수 있습니다.
만약 당신이 PHP의 error_reporting이 notice를 포함하도록 설정되어 있다면, 그것은 방출될 것입니다.E_NOTICE
정의되지 않은 변수를 사용하려고 하면 런타임에 오류가 발생합니다.그렇다면 다음과 같습니다.
function main() {
if (rand(0,1) == 0) {
$i = 3;
}
echo $i;
}
코드는 정상적으로 실행되지만, 일부 실행은 '3'을 울립니다(다음 경우).if
success), 그리고 일부는 이를 제기할 것입니다.E_NOTICE
그리고 메아리치는 것은 아무것도 없습니다.$i
에코 문의 범위에는 정의되지 않습니다.
그 기능 외에는,$i
함수의 범위가 다르기 때문에 절대로 정의되지 않습니다.
자세한 정보: http://php.net/manual/en/language.variables.scope.php
언급URL : https://stackoverflow.com/questions/2894087/variable-scope-difference-between-php-and-c-block-scope-is-not-exactly-the-same
'programing' 카테고리의 다른 글
OpenCV를 이용하여 캠 스캐너와 같은 매직 컬러 효과를 얻는 방법 (0) | 2023.09.27 |
---|---|
php const 배열 (0) | 2023.09.27 |
XElement의 아이들 (0) | 2023.09.27 |
Primefaces 3.0 문제.M2 OneMenu 선택Ajax 동작 (0) | 2023.09.27 |
JQuery/Javascript : var가 존재하는지 확인 (0) | 2023.09.27 |