2012-09-08 3 views
4
<html> 
<head><title></title></head> 
<body> 
<?php 
if (isset ($_POST['posted'])) { 
if ($_POST['question1'] == "Lisbon") { 
    echo "You are correct, $_POST[question1] is the right answer<hr>"; 
} 

if ($_POST['question1'] != "Lisbon") { 
    echo "You are incorrect, $_POST[question1] is not. the right answer<hr>"; 
} 
} 
?> 
<form method="POST" action="quiz.php"> 
<input type="hidden" name="posted" value="true"> 
What is the capital of Portugal? 
<br> 
<br> 
<input name=''question1" type=''radio" value=''Porto''> 
Porto 
<br> 
<input name=''question1" type="radio" value=''Lisbon''> 
Lisbon 
<br> 
<input name="question1" type="radio" value=''Madrid''> 
Madrid 
<br> 
<br> 
<input type=''submit''> 
</form> 
</body> 
</html> 

전체 내용은 PDF 파일입니다. 하지만 if 문에서 question1에 ''을 사용했지만 echo 문에서 따옴표를 사용하지 않은 이유는 지정되지 않았습니다.PHP의 대괄호 : 따옴표를 넣을 때와 붙이지 않을 때?

간단히 말해서 : if 문에의 $ _POST [ 'question1']에 ''이 있고 왜 $ _POST [question1]에 echo 문이 없습니까? 그것들은 같은 변수입니다. 감사합니다.

+0

배열 값의 경우 키는 문자열 (따옴표 포함) 또는 숫자 일 수 있습니다. 큰 따옴표로 묶은 문자열에 배열 값을 쓰려면 따옴표가 필요하지 않습니다. http://php.net/string을 참조하십시오 (아래로 스크롤하여 "변수 구문 분석"). – salathe

+0

관련이 없지만 일부 속성 인용 부호가'''(두 개의 작은 따옴표) 대신' " '(두 개의 작은 따옴표)를 사용하여 엉망이 된 것처럼 보입니다. 그것은 실제 코드에 들어 있지만 체크 아웃을 원할 수도 있습니다. –

답변

3

항상은 큰 따옴표로 묶은 문자열을 제외하고 따옴표 (문자열 키의 경우)를 사용합니다. 설명서의 the string parsing section을 참조하십시오.

$juices = array("apple", "orange", "koolaid1" => "purple"); 

echo "He drank some $juices[0] juice.".PHP_EOL; 
echo "He drank some $juices[1] juice.".PHP_EOL; 
echo "He drank some juice made of $juice[0]s.".PHP_EOL; // Won't work 
echo "He drank some $juices[koolaid1] juice.".PHP_EOL; 
+0

'$ juices [koolaid1]'이이 문맥에서 유효하다는 것을 실제로 알지 못했습니다. 내가 제어 문자 등을 필요로하지 않는 한 이중 따옴표를 사용하는 경우는 거의 없습니다. –

+0

'$ juice = $ juices [0]'<- 잘됩니다. –

+2

@Wesley, PHP가 특이한 보간 규칙을 가지고 있습니다. – Matthew

0

배열 키의 문자는 리터럴이므로 텍스트에는 작은 따옴표가 있어야합니다. 정수 키에는 따옴표가 없어야합니다.

다음은 미세한 세부 사항은 다음과 같습니다

  • 알파벳 문자로 배열 키가 시작되면 PHP는 당신이 당신이 그들을 넣어하지 않은 경우 작은 따옴표를 넣어 의미하는 "이해"합니다

    . 따라서 $var[key]$var['key']으로 해석됩니다.
  • 큰 따옴표가있는 문자열 안에는 배열 변수를 중괄호로 묶어 문제를 피할 수 있습니다. HEREDOCS에서도 작동합니다! echo "Your ID is {$user['id']}.".
  • 큰 따옴표를 사용할 수는 있지만 가변 보간을 수행하지 않는 경우에는 권장하지 않습니다 (예 : $var["someKey$num"]). 이 경우에도 $var['someKey'.$num] 또는 $var["someKey{$num}"]을 사용하는 것이 좋습니다.