php 문법 질문있습니다.

php 문법 질문있습니다.

QA

php 문법 질문있습니다.

본문


php 문법 질문있습니다.

질문1
$row[wr] 이렇게 쓰는것보다 $row['wr'] 이렇게가 맞는거겠죠??


질문1
$row[$i] 변수가 들어간부분도  $row['$i'] 이렇게 표기가 맞나요?


질문3
아래표기는 어떤형태가 좋은표기이죠?
sql_fetch(" select subject from banner where cate = '".$row['cate']."' ");
sql_fetch(" select subject from banner where cate = '{$row['cate']}' ");


질문4
아래표기는 어떤형태가 좋은것인가요?
echo "?$qstr&page=")";
echo "?".$qstr."&page=")";
echo "?{$qstr}&page=")";


질문5 여러개의 변수가 들어가는경우 어떤형태가 맞는건지..
$sql = "select * from $DB_name $where $where1 $where2 ";
$sql = "select * from ".$DB_name." ".$where." ".$where1." ".$where2 ;
$sql = "select * from {$DB_name} {$where} {$where1} {$where2} ";


질문6
배열변수의경우 어느형태로 쓰는것이 맞는건지..
$all_count  = $row[0];
$all_count  = $row['0'];

이 질문에 댓글 쓰기 :

답변 4

php 문법 질문있습니다.
질문1
$row[wr] 이렇게 쓰는것보다 $row['wr'] 이렇게가 맞는거겠죠??
==> $row["wr"] 도 됩니다.....
다만 컴파일시에 $row['wr'] 좋다고 어디서 주서들었습니다.

질문1
$row[$i] 변수가 들어간부분도  $row['$i'] 이렇게 표기가 맞나요?
아닙니다. 엄밀하게 말하면 다릅니다.
$i가 숫자일경우를 생각하시면 됩니다. 문자와 숫자는 다르지요. 
하지만 이것을 무시하고 같은것으로 처리 됩니다..... 


질문3
아래표기는 어떤형태가 좋은표기이죠?
sql_fetch(" select subject from banner where cate = '".$row['cate']."' ");
sql_fetch(" select subject from banner where cate = '{$row['cate']}' ");

아주 작은 차이가 있다고 들었습니다. 이건 잘 모르겠습니다.

질문4
아래표기는 어떤형태가 좋은것인가요?
echo "?$qstr&page=")";
echo "?".$qstr."&page=")"; <-- 이거요..... 원칙상으로 좋다는것이지
echo "?{$qstr}&page=")";

질문5 여러개의 변수가 들어가는경우 어떤형태가 맞는건지..
$sql = "select * from $DB_name $where $where1 $where2 ";
$sql = "select * from ".$DB_name." ".$where." ".$where1." ".$where2 ;
$sql = "select * from {$DB_name} {$where} {$where1} {$where2} "; <-- 이게 제일 좋겠지요. 구분이 확실히 되지요. 타이핑도 편하고.


질문6
배열변수의경우 어느형태로 쓰는것이 맞는건지..
$all_count  = $row[0]; <-- 숫자
$all_count  = $row['0']; <-- 문자
위에 답변드렸습니다. 아래코드를 실행해 보세요.. 똑같이 나오나 다르게 나오나....
똑같이 나온다면 무엇을 쓰시겠습니까?
<?
$arr= array();
$arr[0] = 1;
$arr['0']=2;
print_r($arr);
?>

숫자 즉 배열 번호를 참조하는 것이라면 그냥 쓰는게 좋습니다 $row[0]

문자형 배열을 참조하는 것이라면 홑따옴표를   $row['wr']   

변수 참조라면 홑따옴표 없는 변수를             $row[$i] 

 

중괄호로 변수를 감쌀지 혹은 연결자를 이용해서 변수를 처리할지는 본인의 코딩 스타일에 따라

어느것이든 상관 없지만 중괄호를 적절히 쓴다면 보기에 훨씬 편할듯 합니다

 

 

 

질문1

php 버전에 따라서 상이합니다.

5.3버전 이후 부터 $row['wr'] 이러한 문법을 권장하고 있습니다. 그 이전 버전대에는 $row[wr] 허용 하였습니다. php8버전대에는 지원 중지를 하였으니 앞으로는 권장하는 방향으로 코딩하시길 바랍니다.

질문1

$row[$i] 이러한 형태로 사용하셔야 합니다. 인식되지 못한 키라고 오류를 뽑아냅니다.

 

질문3

취향의 영역이라 편한 코딩으로 하시면 됩니다.

 

질문4

2번째가 나아보입니다.

 

질문5

3개 모두 추천 드리지 않습니다.

$where 조건의 변수를 하나를 두시고 문자를 연결하는 형태를 추천드립니다.

 

 

 

질문6

배열의 인덱스는 정수형태 입니다. 그래서 문자열 형식으로 접근하시기 보다는 첫 번째 정수 형태로 하시는 것이 맞습니다.

 

   

기본적으로 모든 답변은 아래 페이지에 나옵니다.

- https://www.php.net/manual/en/language.types.string.php
  - https://www.php.net/manual/en/language.types.string.php#language.types.string.parsing

- https://www.php.net/manual/en/language.types.array.php
  - Array do's and don'ts - https://www.php.net/manual/en/language.types.array.php#language.types.array.donts

- https://www.php.net/manual/en/function.echo

‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥

질문1
$row[wr] 이렇게 쓰는것보다 $row['wr'] 이렇게가 맞는거겠죠??
  > $row['wr'] 구문이 맞습니다.

질문1
$row[$i] 변수가 들어간부분도  $row['$i'] 이렇게 표기가 맞나요?
  > 틀립니다. '로 감싸면 해석되지 않습니다. $lang = 'PHP'; echo '$lang'; // $lang 그대로 출력

질문3
아래표기는 어떤형태가 좋은표기이죠?
sql_fetch(" select subject from banner where cate = '".$row['cate']."' ");
sql_fetch(" select subject from banner where cate = '{$row['cate']}' ");
  > 둘 다입니다. 본인에게 편한 구문을 사용하면 됩니다.
  코드 하이라이트 기능이 있다면, 위쪽의 구문이 문자열과 변수가 구분되어 보기 편할 수 있습니다.
  + sprintf() 함수 사용도 나쁘지 않습니다. 설명 및 예제 참고해보세요.
  - https://www.php.net/manual/en/function.sprintf.php

질문4
아래표기는 어떤형태가 좋은것인가요?
echo "?$qstr&page=")";
echo "?".$qstr."&page=")";
echo "?{$qstr}&page=")";
  > 구문 오류는 그냥 넘기고, 질문3의 답변과 마찬가지입니다.
  + 참고로 아래 http_build_query() 함수 설명 및 예제를 참고해보세요.
  - https://www.php.net/manual/en/function.http-build-query.php

질문5 여러개의 변수가 들어가는경우 어떤형태가 맞는건지..
$sql = "select * from $DB_name $where $where1 $where2 ";
$sql = "select * from ".$DB_name." ".$where." ".$where1." ".$where2 ;
$sql = "select * from {$DB_name} {$where} {$where1} {$where2} ";
  > 처음에 남긴 링크의 설명 및 예제 참고하면 됩니다.
  질문3의 답변과 마찬가지로 본인에게 편한 구문을 사용하면 됩니다.

질문6
배열변수의경우 어느형태로 쓰는것이 맞는건지..
$all_count  = $row[0];
$all_count  = $row['0'];
  > $row[0]. 숫자만 있으면 굳이 '로 감쌀 필요가 없습니다.
  + 참고로 0은 int, '0'은 string입니다. 느슨(Loose)한 비교로 둘은 같지만, 엄격(Strict)한 비교로는 다릅니다.
  - https://www.php.net/manual/en/types.comparisons.php

답변을 작성하시기 전에 로그인 해주세요.
전체 123,534 | RSS
QA 내용 검색

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT