2009-09-04 6 views
1

다음 중 올바른 것은? 첫 번째 코드는 $ _GET 배열에 따옴표가없고 두 번째 코드는 텍스트 문자열 일 때이 문자를 가져야한다고 생각합니다. 그러나이 경우에는 변수이며 키가 숫자 인 경우에도 무엇입니까?PHP 배열 키를 따옴표로 묶어야합니까?

아니오 번째 키로 리터럴 스트링 '$name'를 사용하는 동안 첫번째 키로서 $name의 값을 사용

function arg_p($name, $default = null) { 
    return (isset($_GET['$name'])) ? $_GET['$name'] : $default; 
} 
+0

괄호처럼한다면 당신은 통지를 얻을 것이다)는 ('인'이 아닌' '' '. 후자는 작은 따옴표 또는 아포스트로피입니다. – Gumbo

+0

괄호()를 말할 때() 또는 괄호 []를 말하고 있습니까? 완전히 혼란스럽지 않거나 게시물을 편집 한 경우 두 경우의 유일한 차이점은 '$ name'주변의 작은 따옴표 인 것 같습니다. – dnagirl

+1

검보의 대답이 옳습니다. 또한이 경우 작은 따옴표가없는 버전은 거의 틀림없이 오류라고 지적하고 싶습니다. $ name의 값에 관계없이 항상 동일하게 작동합니다. – Kip

답변

10

따옴표

function arg_p($name, $default = null) { 
    return (isset($_GET[$name])) ? $_GET[$name] : $default; 
} 

인용.

+0

좋아 좋아, 그럼 $ something [3]; 통지의 권리를 표시하지 않겠습니까? – JasonDavis

+3

@ jasondavis : 알 수없는 오프셋 */* 알 수없는 색인 * 알림을 의미한다고 가정합니다.해당 항목을 읽으려고 시도하기 전에 해당 항목이 존재하는지 테스트해야하기 때문입니다. 이를 수행하는 한 가지 방법은'isset'이고 또 하나는'array_key_exists'입니다. – Gumbo

7

PHP의 경우 PHP는 큰 따옴표 안에있는 변수를 평가하기 때문에 $_GET["$name"]$_GET[$name]은 동일합니다. 변수 $name이 저장하는 키가 반환됩니다.

그러나 은 $name에 포함되지 않은 $name 키를 검색합니다.

키가 숫자 인 경우 $_GET[6], $_GET['6']$_GET["6"]은 모두 구문 상 동일합니다.

2
  • 키 변수

    $ 배열 [$ 키] 인 경우;

당신은 그것을 인용 할 필요가 없습니다.

$ 배열 [ '있는 MyKey를']

  • 는하지만 경우에 당신이해야 리터럴 문자열 (따옴표에 포장하지 않는 경우는 문자열이 아닌);

하고이

$array[mykey]; 
+1

$ array [mykey]에 대한 오류가 표시되지 않습니다. 당신은 오직 PHP 통지를 받게됩니다. 자세한 내용은 http://thephpcode.blogspot.com/2009/09/php-speed-up-quote-your-strings.html을 확인하십시오. – mauris

+0

예, 당신은 사실이지만 여전히 좋지 않습니다. – Ayoub

관련 문제