2014-11-13 4 views
-1

어디에서 잘못 될지 지적 해주십시오.PHP를 사용하여 테이블에 JSON 파일의 데이터 표시

PHP를 사용하여 html 테이블에 JSON 데이터 파일 (phpmyadmin의 내보내기 함수에서 생성)을 표시하려고합니다. 손실
없이

플레이어 게임 :

 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
     <html xmlns="http://www.w3.org/1999/xhtml"> 
     <link href="CSS/json.css" rel="stylesheet" type="text/css" /> 

     <head> 
     <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
     <title>Untitled Document</title> 
     </head> 

     <body> 

     <thead> 

      <tr> 
       <th>Player</th> 
       <th>Games Without Loss</th> 
      </tr> 
     </thead> 

     <?php 

     $json=file_get_contents("1314withoutloss.json"); 
     $data = json_decode($json, true); 


     foreach($data->results as $item) 
     { 
       echo '<tr>'; 
        echo '<td>'.$item['Player'].'</td>'; 
        echo '<td>'.$item['Games Without Loss'].'</td>'; 
       echo '</tr>'; 
     } 

     ?> 

     </body> 
     </html> 

이 내가 브라우저에서 무엇을 얻을 수 있습니다 : 여기

 /** 
     Export to JSON plugin for PHPMyAdmin 
     @version 0.1 
     */ 

     [{"Player": "Shazu","Games Without Loss": 8}, {"Player": "Vlad","Games Without Loss": 7}] 

는 PHP입니다 : 여기

는 JSON 파일입니다 Notice : 32 행의 C : \ xampp \ htdocs \ Playersleague2 \ jsontest.php에있는 non-object의 속성을 얻으려고합니다.

경고 : C에서 foreach는()에 대한 공급 잘못된 인수가 : \ XAMPP \ htdocs를 \ Playersleague2 \ jsontest.php 라인 (32)

당신의 도움에이 많이 주시면 감사하겠습니다.

dummycode :

$json = '[{"Player": "Shazu","Games Without Loss": 8}, {"Player": "Vlad","Games Without Loss": 7}]'; 

$data = json_decode($json); 
foreach ($data as $item) 
{ 
echo $item->Player; 

} 

이 실제 코드로 : json_decode($data, true)을 사용하여

$data = json_decode($json); 


foreach($data as $item) 
{ 
    echo '<tr>'; 
    echo '<td>'.$item->Player.'</td>'; 
    echo '<td>'.$item->{"Games Without Loss"}.'</td>'; 
    echo '</tr>'; 
} 

반환 객체

+0

먼저 테이블을

개의 태그로 묶으십시오. 네 부모님은 몸 꼬리표 야. 테이블 태그 쌍으로 모두 마무리하십시오 :). 또한, 당신의 테드 아래에, 테이블 행을 하나의 tbody에 넣으십시오. –

+0

둘째, $ data에는 결과 속성이 없습니다. 대신'foreach ($ data as $ item)'를 시도하십시오. –

답변

2

는 코드에 적응이 그것을 시도 연관 배열로 변환되기 때문에 연관 배열에 액세스 할 수 없습니다. 귀하의 foreach (...)에서와 같이 객체 연산자 ->입니다. 어떤 경우에는, 그냥 $data는, 객체 또는 배열 값 (정말 "결과"라는 개체/배열 키가 있다면이 경우에, 다른 것입니다) 루프 내부에서 가져온 것입니다

편집 :

... 
$json = file_get_contents('json.json'); 

$s = explode("*/",$json); 
$data = json_decode($s[1]); 
... 

참고 :이

를 사용하여 JSON 파일이 주석 몇 가지 추가 라인을 가지고 있기 때문에 대신의 당신은에서 해설 블록을 제거하는 phpadmins에게 출력을 조정하기 위해 시도 할 수있다, 이런 식으로 작동합니까 파일 상단

+0

도움 주셔서 감사합니다. 나는 귀하의 코드를 사용하여 실제로 작동합니다. 그러나 루프가 두 행에 표시되지 않고 모두 하나로 표시됩니다. 한 번 더 .json 파일을 가리킬 때마다 파일을 지정할 수 있기를 바랍니다. 브라우저에서 다음과 같은 오류 메시지가 나타납니다. \t 경고 : C : \ xampp \ htdocs \ Playersleague2 \ jsontest.php의 foreach()에 잘못된 인수가 제공되었습니다. 미리 조언 해 주셔서 감사합니다. – London83

+0

행이있는 경우 : 루프 앞에 테이블을 작성하십시오. 테이블은 - 제 - th- 닫고 thead- 바디를 누른 다음 루프를 수행 한 다음 루프를 닫습니다. tbody- 닫기 테이블. 그러면 테이블처럼 보일 것입니다. 두 번째 경우에는 다른 가능성이있을 수 있습니다. 파일이 var_dump ($ json)과 함께 사용 가능한지 확인할 수 있습니다. 당신이 file_get_contents를 호출 한 후 – baao

+0

환상적인 테이블 문제가 정렬됩니다, 나는 너무 어리 석다. var dump가 내 json 데이터를 표시하고 있지만 경고 메시지 : C : \ xampp \ htdocs \ Playersleague2 \ jsontest.php의 foreach()에 30 번째 줄에 잘못된 인수가 제공되었습니다. 30 번째 줄에서는 foreach ($ data를 $ 목). 나는 지금 그것을 표시 할 것이다. – London83

-1

루프 내부에서 Object 키에 올바르게 액세스하지 않습니다. 다음과 같이 공백이 있으면 객체 키에 액세스 할 수 있습니다.

$item->{"Games Without Loss"} 

또한 공백이있는 키는 사용하지 않는 것이 좋습니다.

관련 문제