변수를 사용할때도 광역변수, 로컬변수를 생각해가며 로직을 짜야한다.
이렇게 복잡한건 질색이지만, 프로그래머의 숙명이니까 그냥 받아들이도록 하자.
글쓰는건 늘 귀찮기때문에 최대한 쉽고 간결하게 끝내려 한다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | <?php $a = 1; echo $a; b(); function b() { $a = 2; echo $a; } echo $a; ?> | cs |
위 예제의 출력값은
121
이다.
1) 3행에서 $a를 1로 선언했다.
2) 5행에서 $a를 출력했으니 일단 1이 출력값에 띄워진다.
3) 8행에서 b라는 함수안에 있는 $a를 2로 바꾸고 출력했다. 2가 출력값에 이어서 띄워졌다.
4) 14행에서 $a를 출력했으나 출력값에는 1이 띄워졌다.
그래서 121이 되었다.
함수안에서 재선언한 변수는 함수 밖에서는 적용되지 않는다.
하지만 이를 예외처리하는 방법도 있다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | <?php $a = 1; echo $a; b(); function b() { global $a; $a = 2; echo $a; } echo $a; ?> | cs |
10행처럼 $a의 변수에 따로 global키워드를 붙여넣는 것이다. 이는 자바에서 public과 같은 역할을 하는데, 함수 안에서든 밖에서든 사용이 가능케하는 키워드이다.
다음글) PHP) 정적변수에 대해.. 함수 안에서 변수 사용하기 ( static 키워드 사용법 )