2013-03-22 1 views
0

내 컴퓨터에 로컬로 설치된 Apache/PHP/MySQL을 사용하여 신속하게 문제를 테스트합니다. 내가 현재 작업하고있는 것 중 하나는 GD 라이브러리를 통해 동적으로 생성 된 게임의 통계에 대한 육각형 차트입니다.PHP 배열 색인 오류

멋진 결과를 얻으면서 내 노트북에서 모든 것이 정상적으로 작동했습니다. image1

그러나 나는 내가 구문 오류 받고 있어요 구입 한 서버에 배포 할 때 :

$hexstat = new CL2HexStatPoints( 
    CL2StatsRepository::GetClassesFromJson()[$id], <- *error here* 
    new CHexagon(CVector2::Create(constant("RADIUS"), constant("RADIUS")) 
    ) 
); 

그것은 보이지 않는다 :

Parse error: syntax error, unexpected '['

이 성명에서 오는을 거기에있는 인덱스 연산자가 마음에 든다. 함수 자체는 json 파일을 구문 분석하고 플레이어 클래스에 대한 속성을 포함하는 객체의 배열을 반환합니다. var_dump를 사용하여 실제로 배열임을 확인했습니다. 그러나 내가 이렇게 프로그램한다면 :

$array = CL2StatsRepository::GetClassesFromJson(); 
var_dump($array[$id]); // this is ok 
var_dump(CL2StatsRepository::GetClassesFromJson()[$id]); // this isn't 

첫 번째 문장은 OK이고, 두 번째 문장은 그렇지 않습니다. 내 작업 컴퓨터에있는 PHP 버전은 5.4.12이고 서버에있는 PHP 버전은 5.3.22입니다. 버전간에 연산자가 관련되어 있거나 변경해야 할 설정이있는 것으로 추측됩니다. 나는 정말로 주위에 어떤 정보도 찾을 수 없었습니다. 아마 이것이 왜 이것에 대해 밝힐 수있는 사람이 있습니까? 고마워.

편집 : 이전 PHP 버전과 호환되도록 코드를 수정 했으므로 이제부터 염두에 두겠습니다. 사람이보고에 관심이 있다면 그것은 진짜 일 : http://www.qzmpox.nl/l2/hexagon/hexagontest.php

+1

당신의 가정은 당신의 서버에서 작동하지 않는 이유입니다 옳은. 함수 호출에서의 참조 해제는 PHP 5.4에서만 도입되었습니다. 부수적으로 이는 개발 환경을 프로덕션 환경과 가능한 유사하게 유지하려는 이유입니다. – Gordon

+1

이 구문은 PHP 5.4에 추가되었습니다. [here] (http://php.net/manual/en/language.types.array.php#example-88) – juco

+0

Gorden, Juco 및 Rafal에게 감사드립니다. 나는 실제로 호스팅을 구입 했으므로 나는 이미 최신 버전을 가지고 있다고 가정했다. 지금 막 PHP 버전을 확인했습니다. 도움을 주셔서 감사합니다. –

답변

1

을 즉시 PHP < 5.4 결과의 "인덱스"를 액세스 할 수 없습니다, 코드의 두 번째 조각