질문/조언질답게시판

회원번호 등을 특정해서 사용할때..

 

$member_srl = 1234;

 

이런식으로 1234를 넣을때 '1234'  혹은 1234  홀따옴표가 없는게 맞는거죠?

따옴표 있어도 동작하지 않나요?

 

이 따옴표를 넣지 않아야 된다면 이유가 궁금해졌습니다.

 

  • profile
    그냥 원래 정해져 있는거 군요.
    숫자,문자

    '1234' 로 하면 동작 안했었나.. 기억이 가물 하네요 ㅋ
  • profile

    원래 '따옴표'가 '이거 숫자 아님'이라는 뜻입니다.

    컴퓨터는 숫자밖에 모르거든요. 그래서 사람이 읽을 수 있는 글자를 컴퓨터에 입력할 때는 따옴표로 감싸서 '이거 숫자로 변환해서 써야 한다'라고 알려주는 것입니다. 홑따옴표는 단순히 글자를 숫자(아스키코드나 유니코드)로 변환해서 처리하기만 하고, 겹따옴표는 그 안에 들어있는 변수나 특수문자를 변환하는 편의기능도 추가되고요.

     

    예를 들어 'xetown'이라고 쓰면 컴퓨터는 이것을 UTF-8로 변환하여 [120, 101, 116, 111, 119, 110]으로 처리합니다. 절대로 문자를 그대로 처리하지 않습니다.

    숫자는 이런 변환 과정이 필요하지 않으므로 따옴표를 사용하지 않는 것이 정석입니다. 불필요한 변환 과정을 거치지 않으면 속도도 아주 조금(0.000001% 정도? ㅋㅋ) 빨라질 수 있어요. 그러나 숫자를 따옴표로 묶더라도 평소에 == 연산자로 비교할 때는 문제가 없습니다. PHP나 JS에서는 알아서 변환해 주거든요. 반면, 비교 기준이 더 엄격한 === 연산자를 사용할 때는 따옴표가 있는 것은 있는 것끼리, 없는 것은 없는 것끼리만 비교해야 합니다.

    참고로 문자열(string)은 문자를 줄줄이 이어 놓았다는 뜻으로, 엄밀히 말하면 2글자 이상 한꺼번에 입력할 때 쓰는 표현입니다. 'Y' 'N' 등 1글자만 있을 때는 char라는 자료형을 따로 쓰는 언어도 있지요. 그러나 PHP에서는 1글자든 10000글자든 구분하지 않고 모두 문자열이라고 합니다.

  • profile profile
    오.. 그동안 코드 보면서 무심코 지나갔던게 이제 이해가 가네요. 자세한 설명 감사합니다. 크거가 작거나 등의 연산자를 쓸때 잘 안되었던 적이 아마 제가 이걸 구분하지 못하고 시도했던 적이 있었던거 같습니다.
  • profile profile

    서드파티 자료들 중 $array[key] 이렇게 쓰는 것들이 많은데, 이것도 PHP에서 봐주기는 하지만 엄밀히 말하면 잘못된 거예요. $array는 변수니까 상관없지만, key는 변수도 아니고 숫자도 아니잖아요.

    $array['key']라고 쓰지 않으면 PHP에서 E_NOTICE 에러가 발생하는데... XE에서는 이 에러를 숨겨버리기 때문에 개발자들이 자기가 잘못 썼다는 걸 눈치채지 못해요. 최근 PHP가 점점 엄격해지고 있어서 나중에 7.5쯤 되면 이런 것도 모두 에러를 뿜고 뻗어버리는 건 아닌지 모르겠네요.

  • profile profile
    컴퓨터는 모든게 다 숫자이라는 것만 이해하기 시작하면...

    프로그램짜기는 쉬워지지요ㅎㅎ
  • profile profile
    프로그램 짜기 쉬워지신 분들! 께서 짜주신거 이용하려구요 ㅋ
  • profile
    뭔가 쓰려고 왔다가 기진곰님이 모두 가져가셔서..
  • profile profile
    웹마스터가 자꾸 이런거 궁금해 하면 안되는데요. 웹마스터는 그냥 사이트 운영에만 충실하는거로요 ㅋ
  • profile
    우연히 들어왔다가 웬 황금 같은 정보가;;