백엔드 개발 PHP 튜토리얼 PHP 큰따옴표로 배열 요소에 액세스할 때 발생하는 오류에 대한 해결 방법

PHP 큰따옴표로 배열 요소에 액세스할 때 발생하는 오류에 대한 해결 방법

Feb 02, 2018 am 09:55 AM
php 요소 정렬

아래 편집기는 PHP에서 큰따옴표로 묶인 배열 요소에 액세스할 때 발생하는 오류에 대한 해결책을 공유합니다. PHP를 학습하는 데 좋은 참고 자료이자 가치가 있으므로 모든 사람에게 도움이 되기를 바랍니다. PHP에 관심 있는 친구들은 편집자를 따라가 보세요

저는 현재 WeChat 공개 계정을 개발 중입니다. 그래픽과 텍스트를 전송하기 위한 인터페이스에서 배열 요소를 XMLstring

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 &#39;&#39; (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(&#39;fruit&#39; => &#39;apple&#39;, &#39;veggie&#39; => &#39;carrot&#39;); 
// This will not work, and will result in a parse error, such as: 
// Parse error: parse error, expecting T_STRING&#39; or T_VARIABLE&#39; or T_NUM_STRING&#39; 
// This of course applies to using superglobals in strings as well 
print "Hello $arr[&#39;fruit&#39;]"; 
print "Hello $_GET[&#39;foo&#39;]";
로그인 후 복사

일반적인 배열 변수나 슈퍼 전역 배열 변수를 큰따옴표로 묶은 경우에는 두 가지 잘못된 작성 방법이 있습니다. index 문자열의 배열 요소에 대해 작은따옴표를 색인 문자열에 추가하면 안 됩니다. 그렇다면 올바른 작성 방법은 무엇입니까? 그래서 공식 매뉴얼을 계속 검색한 결과 다음과 같은 문구를 발견했습니다.

$arr = array(&#39;fruit&#39; => &#39;apple&#39;, &#39;veggie&#39; => &#39;carrot&#39;);

// This defines a constant to demonstrate what&#39;s going on. The value &#39;veggie&#39;
// is assigned to a constant named fruit.
define(&#39;fruit&#39;, &#39;veggie&#39;);

// The following is okay, as it&#39;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[&#39;fruit&#39;]}"; // Hello apple

$arr = array(&#39;fruit&#39; => &#39;apple&#39;, &#39;veggie&#39; => &#39;carrot&#39;);

// This defines a constant to demonstrate what&#39;s going on. The value &#39;veggie&#39;
// is assigned to a constant named fruit.
define(&#39;fruit&#39;, &#39;veggie&#39;);

// The following is okay, as it&#39;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[&#39;fruit&#39;]}"; // 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 &#39;fruit&#39; in... 
print $arr[fruit];  // apple 
<pre name="code" class="php">print $arr[&#39;fruit&#39;]; // apple
로그인 후 복사
// This defines a constant to demonstrate what&#39;s going on. The value &#39;veggie&#39;// is assigned to a constant named fruit.define(&#39;fruit&#39;, &#39;veggie&#39;);// Notice the difference nowprint $arr[fruit]; // carrot

print $arr[&#39;fruit&#39;]; // apple
로그인 후 복사
일반적인 상황에서 배열 변수가 큰따옴표로 묶이지 않은 경우 Apple이 인덱스 문자열에 작은따옴표를 추가하든지 출력 결과는 일관됩니다. 정의 a 문자열 과일과 동일한 이름을 가진 상수를 인덱싱할 때 작은 따옴표가 없는 인덱스 문자열의 출력 결과는 당근이 되지만 작은 따옴표를 사용하면 사과로 유지됩니다.

결론:

1. 배열 변수를 큰따옴표로 묶지 않은 경우

(1) 인덱스 문자열과 작은따옴표가 문자열 자체를 나타냅니다.

<pre name="code" class="php">$arr[&#39;fruit&#39;]
로그인 후 복사
(2) 인덱스 문자열이 아닙니다. 작은따옴표를 추가하는 것은 상수를 나타냅니다. 상수가 정의되지 않은 경우 작은따옴표를 추가하는 것과 동일하게 문자열로 구문 분석됩니다.

$arr[fruit]
로그인 후 복사

2. 배열 변수를 큰따옴표로 묶은 경우

(1) 작은따옴표가 없는 인덱스 문자열은 문자열 자체를 나타냅니다.

"$arr[fruit]"
로그인 후 복사
(2) 배열 변수와 중괄호는 같은 이름을 나타냅니다. 문자열 상수

"{$arr[fruit]}"
로그인 후 복사

(3) 인덱스 문자열과 작은따옴표, 배열 변수와 중괄호는 문자열 자체를 나타냅니다.

<pre name="code" class="php"><pre name="code" class="php">"{$arr[&#39;fruit&#39;]}"
로그인 후 복사

(4) 인덱스 문자열과 작은따옴표, 중괄호가 없는 배열 변수는 오류입니다. 작성 방법, 오류 보고: 구문 분석 오류: 구문 분석 오류, 예상 T_STRING' 또는 T_VARIABLE' 또는 T_NUM_STRING'

<pre name="code" class="php"><pre name="code" class="php">"$arr[&#39;fruit&#39;]"
로그인 후 복사

PHP에서 큰따옴표로 묶인 배열 요소에 액세스할 때 발생하는 오류에 대한 해결 방법을 기반으로 한 위 기사는 모두 공유되는 내용입니다. 편집자님. 참고할 수 있기를 바랍니다! !

추천 기사:

PHP 배열의 낮은 메모리 사용률에 대한 자세한 분석


PHP 배열의 길이를 구하는 방법

PHP 배열 액세스 인터페이스 ArrayAccess에 대한 자세한 설명 예

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

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

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

AI Hentai Generator

AI Hentai Generator

AI Hentai를 무료로 생성하십시오.

인기 기사

R.E.P.O. 에너지 결정과 그들이하는 일 (노란색 크리스탈)
3 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 최고의 그래픽 설정
3 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 아무도들을 수없는 경우 오디오를 수정하는 방법
3 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25 : Myrise에서 모든 것을 잠금 해제하는 방법
4 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌

뜨거운 도구

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

Ubuntu 및 Debian용 PHP 8.4 설치 및 업그레이드 가이드 Ubuntu 및 Debian용 PHP 8.4 설치 및 업그레이드 가이드 Dec 24, 2024 pm 04:42 PM

PHP 8.4는 상당한 양의 기능 중단 및 제거를 통해 몇 가지 새로운 기능, 보안 개선 및 성능 개선을 제공합니다. 이 가이드에서는 Ubuntu, Debian 또는 해당 파생 제품에서 PHP 8.4를 설치하거나 PHP 8.4로 업그레이드하는 방법을 설명합니다.

CakePHP 날짜 및 시간 CakePHP 날짜 및 시간 Sep 10, 2024 pm 05:27 PM

cakephp4에서 날짜와 시간을 다루기 위해 사용 가능한 FrozenTime 클래스를 활용하겠습니다.

CakePHP 토론 CakePHP 토론 Sep 10, 2024 pm 05:28 PM

CakePHP는 PHP용 오픈 소스 프레임워크입니다. 이는 애플리케이션을 훨씬 쉽게 개발, 배포 및 유지 관리할 수 있도록 하기 위한 것입니다. CakePHP는 강력하고 이해하기 쉬운 MVC와 유사한 아키텍처를 기반으로 합니다. 모델, 뷰 및 컨트롤러 gu

CakePHP 파일 업로드 CakePHP 파일 업로드 Sep 10, 2024 pm 05:27 PM

파일 업로드 작업을 위해 양식 도우미를 사용할 것입니다. 다음은 파일 업로드의 예입니다.

CakePHP 유효성 검사기 만들기 CakePHP 유효성 검사기 만들기 Sep 10, 2024 pm 05:26 PM

컨트롤러에 다음 두 줄을 추가하면 유효성 검사기를 만들 수 있습니다.

CakePHP 로깅 CakePHP 로깅 Sep 10, 2024 pm 05:26 PM

CakePHP에 로그인하는 것은 매우 쉬운 작업입니다. 한 가지 기능만 사용하면 됩니다. cronjob과 같은 백그라운드 프로세스에 대해 오류, 예외, 사용자 활동, 사용자가 취한 조치를 기록할 수 있습니다. CakePHP에 데이터를 기록하는 것은 쉽습니다. log() 함수는 다음과 같습니다.

PHP 개발을 위해 Visual Studio Code(VS Code)를 설정하는 방법 PHP 개발을 위해 Visual Studio Code(VS Code)를 설정하는 방법 Dec 20, 2024 am 11:31 AM

VS Code라고도 알려진 Visual Studio Code는 모든 주요 운영 체제에서 사용할 수 있는 무료 소스 코드 편집기 또는 통합 개발 환경(IDE)입니다. 다양한 프로그래밍 언어에 대한 대규모 확장 모음을 통해 VS Code는

CakePHP 빠른 가이드 CakePHP 빠른 가이드 Sep 10, 2024 pm 05:27 PM

CakePHP는 오픈 소스 MVC 프레임워크입니다. 이를 통해 애플리케이션 개발, 배포 및 유지 관리가 훨씬 쉬워집니다. CakePHP에는 가장 일반적인 작업의 과부하를 줄이기 위한 여러 라이브러리가 있습니다.

See all articles