회원번호 등을 특정해서 사용할때..
$member_srl = 1234;
이런식으로 1234를 넣을때 '1234' 혹은 1234 홀따옴표가 없는게 맞는거죠?
따옴표 있어도 동작하지 않나요?
이 따옴표를 넣지 않아야 된다면 이유가 궁금해졌습니다.
회원번호 등을 특정해서 사용할때..
$member_srl = 1234;
이런식으로 1234를 넣을때 '1234' 혹은 1234 홀따옴표가 없는게 맞는거죠?
따옴표 있어도 동작하지 않나요?
이 따옴표를 넣지 않아야 된다면 이유가 궁금해졌습니다.
원래 '따옴표'가 '이거 숫자 아님'이라는 뜻입니다.
컴퓨터는 숫자밖에 모르거든요. 그래서 사람이 읽을 수 있는 글자를 컴퓨터에 입력할 때는 따옴표로 감싸서 '이거 숫자로 변환해서 써야 한다'라고 알려주는 것입니다. 홑따옴표는 단순히 글자를 숫자(아스키코드나 유니코드)로 변환해서 처리하기만 하고, 겹따옴표는 그 안에 들어있는 변수나 특수문자를 변환하는 편의기능도 추가되고요.
예를 들어 'xetown'이라고 쓰면 컴퓨터는 이것을 UTF-8로 변환하여 [120, 101, 116, 111, 119, 110]으로 처리합니다. 절대로 문자를 그대로 처리하지 않습니다.
숫자는 이런 변환 과정이 필요하지 않으므로 따옴표를 사용하지 않는 것이 정석입니다. 불필요한 변환 과정을 거치지 않으면 속도도 아주 조금(0.000001% 정도? ㅋㅋ) 빨라질 수 있어요. 그러나 숫자를 따옴표로 묶더라도 평소에 == 연산자로 비교할 때는 문제가 없습니다. PHP나 JS에서는 알아서 변환해 주거든요. 반면, 비교 기준이 더 엄격한 === 연산자를 사용할 때는 따옴표가 있는 것은 있는 것끼리, 없는 것은 없는 것끼리만 비교해야 합니다.
참고로 문자열(string)은 문자를 줄줄이 이어 놓았다는 뜻으로, 엄밀히 말하면 2글자 이상 한꺼번에 입력할 때 쓰는 표현입니다. 'Y' 'N' 등 1글자만 있을 때는 char라는 자료형을 따로 쓰는 언어도 있지요. 그러나 PHP에서는 1글자든 10000글자든 구분하지 않고 모두 문자열이라고 합니다.
서드파티 자료들 중 $array[key] 이렇게 쓰는 것들이 많은데, 이것도 PHP에서 봐주기는 하지만 엄밀히 말하면 잘못된 거예요. $array는 변수니까 상관없지만, key는 변수도 아니고 숫자도 아니잖아요.
$array['key']라고 쓰지 않으면 PHP에서 E_NOTICE 에러가 발생하는데... XE에서는 이 에러를 숨겨버리기 때문에 개발자들이 자기가 잘못 썼다는 걸 눈치채지 못해요. 최근 PHP가 점점 엄격해지고 있어서 나중에 7.5쯤 되면 이런 것도 모두 에러를 뿜고 뻗어버리는 건 아닌지 모르겠네요.
숫자,문자
'1234' 로 하면 동작 안했었나.. 기억이 가물 하네요 ㅋ