2013-08-27 2 views
0

그래서 내가 JSON 배열을 얻을 API 호출을 나누어되지 않는 오류가 발생합니다 :CakePHP의 배열이

다음 작업을 수행 할 때

$data = $this->HasOffers->get_full_detail_report()['data']['data']; 
$this->set('data',$data); 

내가 an internal error has occoured

말하는 오류가

그러나 내가하는 경우 :

$data = $this->HasOffers->get_full_detail_report(); 
$data2 = $data['data']['data']; 
$this->set('data',$data2); 

모든 것이 올바르게 작동합니다.

이제 제 질문이 왜 이런 일입니까? 어떻게 해결할 수 있습니까?

+0

어떤 PHP 버전을 사용하고 있습니까? IIRC에서,'function() [ 'key']'구문은 PHP> = 5.4에서만 유효합니다 – keithhatfield

답변

2

첫 번째 예제에서 사용하는 구문은 PHP> = 5.4에서만 사용할 수 있습니다. http://php.net/manual/en/language.types.array.php#example-88 당신이 예에서 PHP의 다른 버전에서 실행 볼 수 있습니다

: 그것은 http://3v4l.org/XhCKH

귀하의 CakePHP의 사이트 가능성이 오류보고 그렇게 꺼진보다는 구문 오류를 표시 PHP 매뉴얼의 관련 섹션을 참조하십시오 내부 오류를 표시합니다.

0

첫 번째 예제에서 참조하는 배열이 get_full_detail_report() 함수가 호출 된 후에 만 ​​존재하기 때문에 이러한 현상이 발생합니다. PHP는 이것을 좋아하지 않습니다. PHP는 참조하기 전에 배열이 존재하기를 원합니다. 필자는 모든 연산을 수행하기 전에 구문 내에서 변수를 찾으려고 시도한다고 가정합니다. 이는 해당 연산을 수행 할 때까지 존재하지 않는 배열을 검색한다는 의미입니다.

누구든지 이에 대한 더 많은 통찰력이 있다면, 나는 그들의 수정/의견을 환영 할 것입니다.

2

나는 디버그가 < 인 것으로 추측하고 있으므로 오류에 대한 설명은 매우 자세하지 않습니다. 그러나 그 동작은 PHP < 5.4 문제 (해당 주제와 관련하여 post)로 알려져 있습니다.

"수정"하려면 PHP를 5.4 이상으로 업그레이드해야합니다. 또는 이러한 경우에 매개 변수를 사용하면 이 아니며이 잘못되었습니다.