이번에는 PHP에서 큰따옴표 안에 있는 배열 요소에 접근할 때 오류를 처리하는 방법을 보여드리겠습니다. 노트란 무엇이며, PHP에서 큰따옴표 안에 있는 배열 요소에 접근할 때 오류를 처리할 때의
주의사항은 무엇인지 알려드리겠습니다. 실제 사례를 살펴보겠습니다. foreach ($itemArr as $key => $value){
$items .= "<item>
<Title><![CDATA[$value['title']]]></Title>
<Description><![CDATA[[$value['description']]]></Description>
<PicUrl><![CDATA[$value['picUrl']]]></PicUrl>
<Url><![CDATA[$value['url']]]></Url>
</item>";
}
결과는 다음과 같습니다. 오류 메시지:
Parse error: syntax error, unexpected '' (T_ENCAPSED_AND_WHITESPACE), expecting identifier (T_STRING) or variable (T_VARIABLE) or number (T_NUM_STRING) in D:\hhp\wamp\www\weixin\wx_sample.php on line 146
오류 메시지를 보면 작은 따옴표 문제인 것으로 확인됩니다. 확실히 제거한 후에는 오류가 없습니다. 그런데 헷갈립니다. 첨자가
인 배열 요소를 인용하면 안 되나요? 배열에 대한 설명을 확인하기 위해 공식 PHP 매뉴얼에 가보니 다음과 같은 문단이 있습니다.
$arr = array('fruit' => 'apple', 'veggie' => 'carrot'); // This will not work, and will result in a parse error, such as: // Parse error: parse error, expecting T_STRING' or T_VARIABLE' or T_NUM_STRING' // This of course applies to using superglobals in strings as well print "Hello $arr['fruit']"; print "Hello $_GET['foo']";
일반적인 배열 변수나 슈퍼 전역 배열 변수를 큰따옴표로 묶은 경우에는 두 가지 잘못된 작성 방법이 있습니다. index 문자열의 배열 요소에 대해 작은따옴표를 색인 문자열에 추가하면 안 됩니다. 그렇다면 올바른 작성 방법은 무엇입니까? 그래서 공식 매뉴얼을 계속 검색한 결과 다음과 같은 문구를 발견했습니다. $arr = array('fruit' => 'apple', 'veggie' => 'carrot');
// This defines a constant to demonstrate what's going on. The value 'veggie'
// is assigned to a constant named fruit.
define('fruit', 'veggie');
// The following is okay, as it's inside a string. Constants are not looked for// within strings, so no E_NOTICE occurs hereprint "Hello $arr[fruit]"; // Hello apple// With one exception: braces surrounding arrays within strings allows constants// to be interpretedprint "Hello {$arr[fruit]}"; // Hello carrotprint "Hello {$arr['fruit']}"; // Hello apple
$arr = array('fruit' => 'apple', 'veggie' => 'carrot');
// This defines a constant to demonstrate what's going on. The value 'veggie'
// is assigned to a constant named fruit.
define('fruit', 'veggie');
// The following is okay, as it's inside a string. Constants are not looked for
// within strings, so no E_NOTICE occurs here
print "Hello $arr[fruit]"; // Hello apple
// With one exception: braces surrounding arrays within strings allows constants
// to be interpreted
print "Hello {$arr[fruit]}"; // Hello carrot
print "Hello {$arr['fruit']}"; // Hello apple
세 가지 올바른 작성 방법이 있습니다.
인덱스 문자열을 작성하는 첫 번째 방법은 따옴표를 추가하지 않는다는 의미입니다. getting 문자열 과일인 인덱스를 가진 배열 요소를 가져오면 apple이 출력됩니다.
인덱스 문자열을 작성하는 두 번째 방법은 따옴표를 추가하지 않는 동시에 배열 변수를 중괄호 { } 쌍으로 묶습니다. 이때, 과일은 실제로 상수가 아닌 상수를 나타냅니다. 따라서 인덱스가 과일 상수 값인 배열 요소를 가져오는 것을 의미합니다. 상수 과일의 값은 야채이므로 당근이 출력됩니다.
세 번째 작성 방법 은 문자열을 작은따옴표로 묶고 배열 변수를 중괄호 { }로 묶는 것입니다. 이는 인덱스가 문자열 과일인 배열 요소를 가져오는 것을 의미합니다. 나중에 계속 검색하여 다음 코드 조각을 발견했습니다.
// Incorrect. This works but also throws a PHP error of level E_NOTICE because // of an undefined constant named fruit // // Notice: Use of undefined constant fruit - assumed 'fruit' in... print $arr[fruit]; // apple <pre name="code" class="php">print $arr['fruit']; // apple
// This defines a constant to demonstrate what's going on. The value 'veggie'// is assigned to a constant named fruit.define('fruit', 'veggie');// Notice the difference nowprint $arr[fruit]; // carrot print $arr['fruit']; // apple
일반적인 상황에서 배열 변수가 큰따옴표로 묶이지 않은 경우 Apple이 인덱스 문자열에 작은따옴표를 추가하든지 출력 결과는 일관됩니다. a 문자열 Fruit과 동일한 이름을 가진 상수를 인덱싱할 때 작은 따옴표가 없는 인덱스 문자열의 출력 결과는 carrot가 되지만 작은 따옴표를 사용하면 apple로 유지됩니다.
결론:
1. 배열 변수를 큰따옴표로 묶지 않은 경우 (1) 인덱스 문자열과 작은따옴표가 문자열 자체를 나타냅니다.
<pre name="code" class="php">$arr['fruit']
(2) 인덱스 문자열이 아닙니다. 작은따옴표를 추가하는 것은 상수를 나타냅니다. 상수가 정의되지 않은 경우 작은따옴표를 추가하는 것과 동일하게 문자열로 구문 분석됩니다.
$arr[fruit]
2. 배열 변수를 큰따옴표로 묶은 경우 (1) 작은따옴표가 없는 인덱스 문자열은 문자열 자체를 나타냅니다.
"$arr[fruit]"
(2) 배열 변수와 중괄호는 같은 이름을 나타냅니다. 문자열 상수
"{$arr[fruit]}"
(3) 인덱스 문자열과 작은따옴표, 배열 변수와 중괄호는 문자열 자체를 나타냅니다.
<pre name="code" class="php"><pre name="code" class="php">"{$arr['fruit']}"(4) 인덱스 문자열과 작은따옴표, 중괄호가 없는 배열 변수는 오류입니다. 작성 방법, 오류 보고: 구문 분석 오류: 구문 분석 오류, T_STRING' 또는 T_VARIABLE' 또는 T_NUM_STRING'
<pre name="code" class="php"><pre name="code" class="php">"$arr['fruit']"
첨부:
array 설명 URL이 기사의 사례를 읽고 나면 방법을 마스터했다고 믿습니다. , 더 흥미로운 내용에 주목해주세요. PHP 중국어 웹사이트의 기타 관련 기사!
추천 도서:
PHP에서 xml을 구문 분석하고 sql 문을 생성하는 단계에 대한 자세한 설명PHP에서 QQ 로그인을 구현하는 단계에 대한 자세한 설명위 내용은 PHP 큰따옴표로 배열 요소에 액세스할 때 오류를 처리하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!