>  기사  >  백엔드 개발  >  PHP 큰따옴표로 배열 요소에 액세스할 때 오류를 처리하는 방법

PHP 큰따옴표로 배열 요소에 액세스할 때 오류를 처리하는 방법

php中世界最好的语言
php中世界最好的语言원래의
2018-05-19 11:41:501958검색

이번에는 PHP에서 큰따옴표 안에 있는 배열 요소에 접근할 때 오류를 처리하는 방법을 보여드리겠습니다. 노트란 무엇이며, PHP에서 큰따옴표 안에 있는 배열 요소에 접근할 때 오류를 처리할 때의

주의사항

은 무엇인지 알려드리겠습니다. 실제 사례를 살펴보겠습니다.

foreach ($itemArr as $key => $value){ 
  $items .= "<item> 
  <Title><![CDATA[$value[&#39;title&#39;]]]></Title>  
  <Description><![CDATA[[$value[&#39;description&#39;]]]></Description> 
  <PicUrl><![CDATA[$value[&#39;picUrl&#39;]]]></PicUrl> 
  <Url><![CDATA[$value[&#39;url&#39;]]]></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
오류 메시지를 보면 작은 따옴표 문제인 것으로 확인됩니다. 확실히 제거한 후에는 오류가 없습니다. 그런데 헷갈립니다. 첨자가 ​​

string

인 배열 요소를 인용하면 안 되나요? 배열에 대한 설명을 확인하기 위해 공식 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']"
첨부:

php manual

array 설명 URL이 기사의 사례를 읽고 나면 방법을 마스터했다고 믿습니다. , 더 흥미로운 내용에 주목해주세요. PHP 중국어 웹사이트의 기타 관련 기사!

추천 도서:

PHP에서 xml을 구문 분석하고 sql 문을 생성하는 단계에 대한 자세한 설명


PHP에서 QQ 로그인을 구현하는 단계에 대한 자세한 설명

위 내용은 PHP 큰따옴표로 배열 요소에 액세스할 때 오류를 처리하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.