코드 아래 고려 : 또한큰 따옴표 안에 하나의 배열 표기법을 사용하면 구문 분석 오류가 발생하는 이유는 무엇입니까?
**Parse error:** syntax error, unexpected '' (T_ENCAPSED_AND_WHITESPACE), expecting '-' or identifier (T_STRING) or variable (T_VARIABLE) or number (T_NUM_STRING)
나는 프로그램과 같은 이상 작성하는 경우 :
<?php
$arr = array('fruit' => 'apple', 'veggie' => 'carrot');
define('fruit', 'veggie');
print "Hello {$arr['fruit']}"; //This works
print "Hello $arr['fruit']"; //This doesn't work
?>
내가 두 번째는 작업을 다음과 같이 나에게 구문 분석 오류를 포기하지 않을 이유를 이해할 수 아니에요 그 아래에 내가 죽을 때가있다. 첫 번째 실행 라인 다음에 여전히 작동하지 않는 라인을 넣은 후에도 나는 같은 에러를 보게된다.
<?php
$arr = array('fruit' => 'apple', 'veggie' => 'carrot');
define('fruit', 'veggie');
print "Hello {$arr['fruit']}";
die;
print "Hello $arr['fruit']";
?>
나는 이것을 전혀 얻지 못했습니다. 그것은 컴파일 후 첫 번째 라인을 인쇄해야하는데, 그 다음 라인이 컴파일 중에 고려되어서는 안되지만 첫 번째 라인의 실행을 금지하고있다.
왜 그렇습니까?
큰 따옴표로 묶은 문자열 안에 작은 따옴표를 제거하십시오.''Hello $ arr [fruit] '' –
@MagnusEriksson : 나는 그것이 작동한다는 것을 알고 있지만, 배열 인덱스 값과 동일한 이름으로 정의 된 상수가 있다고 가정하십니까? 그러면 지저분해질 것입니다. 그래서 나는 그것이 올바른 접근이라고 생각하지 않습니다. – user2839497
중괄호'{}'없이는 큰 따옴표로 묶인 문자열에서'fruit'를 상수로 구문 분석하지 않습니다. 작은 따옴표를 추가하는 데 필요한 중괄호 안에 만 있습니다. 이 컨텍스트에서 중괄호를 사용하는 것을 "복잡한 구문"이라고합니다. 그 안에 문자열과는 다른 PHP 변수/배열/객체를 작성할 수 있습니다. –