아래 편집기는 PHP에서 큰따옴표로 묶인 배열 요소에 액세스할 때 발생하는 오류에 대한 해결책을 공유합니다. PHP를 학습하는 데 좋은 참고 자료이자 가치가 있으므로 모든 사람에게 도움이 되기를 바랍니다. PHP에 관심 있는 친구들은 편집자를 따라가 보세요
저는 현재 WeChat 공개 계정을 개발 중입니다. 그래픽과 텍스트를 전송하기 위한 인터페이스에서 배열 요소를 XMLstring
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
결론:
1. 배열 변수를 큰따옴표로 묶지 않은 경우
(1) 인덱스 문자열과 작은따옴표가 문자열 자체를 나타냅니다.<pre name="code" class="php">$arr['fruit']
$arr[fruit]
2. 배열 변수를 큰따옴표로 묶은 경우
(1) 작은따옴표가 없는 인덱스 문자열은 문자열 자체를 나타냅니다."$arr[fruit]"
"{$arr[fruit]}"
(3) 인덱스 문자열과 작은따옴표, 배열 변수와 중괄호는 문자열 자체를 나타냅니다.
<pre name="code" class="php"><pre name="code" class="php">"{$arr['fruit']}"
<pre name="code" class="php"><pre name="code" class="php">"$arr['fruit']"
PHP에서 큰따옴표로 묶인 배열 요소에 액세스할 때 발생하는 오류에 대한 해결 방법을 기반으로 한 위 기사는 모두 공유되는 내용입니다. 편집자님. 참고할 수 있기를 바랍니다! !
추천 기사:PHP 배열의 낮은 메모리 사용률에 대한 자세한 분석
PHP 배열 액세스 인터페이스 ArrayAccess에 대한 자세한 설명 예
위 내용은 PHP 큰따옴표로 배열 요소에 액세스할 때 발생하는 오류에 대한 해결 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!