php
  • arrays
  • json
  • 2013-08-28 3 views 1 likes 
    1

    디렉토리의 모든 파일을 정렬하고, json 데이터를 읽고, 디코드하고, 배열에 넣은 다음 모든 파일을 새 파일에 쓰려고합니다.PHP에서 JSON 데이터 통합?

    내가 겪고있는 문제는 결과 배열이 json 데이터의 배열 배열 인 것 같습니다. 여기

    내 코드입니다 : ". 어레이는"인 print_r 그냥 반환

    $AllAppointmentDataFileName = 'AllAppointmentData.jsonp'; 
        $AllAppointmentDataURL = '../Appointments/' . $AllAppointmentDataFileName; 
        if ($handle = opendir('../Appointments')) { 
    
         while (false !== ($entry = readdir($handle))) { 
          if ($entry != "." && $entry != ".." && $entry != $AllAppointmentDataFileName) { 
    
           $AllAppointmentData .= json_decode(file_get_contents('../Appointments/' . $entry)); 
    
           print_r($AllAppointmentData); echo "<br>"; 
    
           echo "$entry:<br>" . file_get_contents('../Appointments/' . $entry) . "<br>"; 
          } 
         } 
    
         closedir($handle); 
        } 
    
        file_put_contents($AllAppointmentDataURL, json_encode($AllAppointmentData)); 
    

    답변

    3

    .= 연산자는 문자열 연결 용입니다. 배열에 요소를 추가하는 것이 아닙니다.

    $AllAppointmentData[] = json_decode(file_get_contents('../Appointments/' . $entry)); 
    

    파일은 단일 어레이로 통합하려는 어레이를 포함 할 경우, 당신은 foreach 루프 사용할 수 있습니다 :

    대신 [] =를 사용한다

    $curAppointmentData = json_decode(file_get_contents('../Appointments/' . $entry)); 
    foreach ($curAppointmentData as $obj) { 
        $AllAppointmentData[] = $obj; 
    } 
    
    +2

    예, 이유'를 print_r' print "Array"는'json_decode'의 결과로 생긴 배열이 문자열에 캐스트되기 때문입니다. – migg

    +0

    좋아. 나는 그것을 바꿨다. 자, 내 json 파일에서, 그것은''[[' ', 두 개의 파일이 있으므로. 여전히 올바른 JSON 형식 (모든 JSON 디코더/판독기에서 읽을 수 있음)으로 간주됩니까? 나는 형식이 현재''[{ "Name": "Value", "Name": "Value"} "[{"Name ":"Value ","Name ":"Value "}]]" – JVE999

    +1

    @ Jamil : 두 배열 사이에 누락 된 쉼표를 제외하고는 유효한 JSON입니다. – PleaseStand

    관련 문제