2014-05-19 2 views
-1

간단한 캐시 스크립트를 작성하려고합니다. 작동하지만 데이터가 내 JSON에 캐시 된 경우 정보를 포함하고 싶습니다. 배열에 어떤 문제가 있습니까?

나는 노력이 :

파일 의 데이터가 유효한 JSON입니다
$cached = file_get_contents("./cache/" . escapeFileName($request)); 
$update = json_decode(json_encode($cached), true); 
$update['server']['cached'] = true; 
return json_encode($update); 

. 정보 노드 cached을 포함하는 server 노드를 추가하기 만하면됩니다. 스크립트는 경고 및 치명적인 오류 발사 :

PHP Warning: Illegal string offset 'server'

PHP Fatal error: Cannot use string offset as an array

+0

왜 같은 시간을 인코딩하고 디코딩합니까? 'print_r ($ update);을 시도하고 당신이 가지고있는 것을 보아라! –

+0

파일의 출력이 문자열이기 때문에 먼저 인 코드 한 다음 배열로 가져와 디코드하여 json으로 다시 인코딩하십시오. – Kimmax

+0

어디서 가리키는 지 이해합니다 : D 내 실패 :) – Kimmax

답변

1

네 당신이 먼저 당신이 찾을 수 배열을 인쇄 할 수 있습니다를보다 오히려 객체의 형태가 인쇄 데이터 정렬. 당신은 그냥 추가 할

$update = (array) json_decode(json_encode($cached), true); 

유형 캐스팅 데이터. 그것은 당신의 문제를 해결할 것입니다.

+0

어떤 문제가 없습니다. 당신은 동시에 인코딩과 디코딩을하고있었습니다. 그래서 다음 번에 디코딩 할 때 배열이 아닌 객체로 변환되었습니다. :) – quicksoft

관련 문제