2017-01-11 1 views
-2

왜이 코드가 올바르게 작동하지 않습니까? 아니면 내가 뭘 잘못하고 있습니까?키 값을 가진 PHP echo json

$json = json_encode($myInstance->getData($id)); 
    $result = json_decode($json,true); 
    $i = 0; 
    foreach ($result as $value) { 
     echo '<div>'.$value[$i]['name'].'</div>'; 
     $i++; 
    } 

첫 번째 값은 올바르게 표시되지만 반복하지는 않습니다! $value[$i]['name']은 반복 실행되지 않습니다 ?? array[1]이 아닌 array[0] 만 인쇄합니다. 감사.

+2

우리가 당신을 도울 수있는 충분한 정보가이 질문에 없습니다. JSON 샘플을 게시하십시오. –

+0

관련된 JSON이 없으면 문제가 무엇인지 알기가 어렵습니다. 또한'$ myInstance'에 대한 좀 더 자세한 정보, 특히 메소드'getData'가 도움이 될 것입니다. –

+0

$ i = 1을 선언 할 때 correclty로 작동하므로 array [1] [ 'name']의 올바른 항목이 표시됩니다. 이 시점에서 json 항목은 중요하지 않습니다. 문제는 $ value [$ i]에 초점을 맞추고 있습니다. 왜 반복하지 않습니까? 그것은 틀렸는가 또는 틀린가? – Tobias

답변

1

중첩 된 foreach 루프를 사용하는 것이 좋지만 일반적으로 훌륭한 코딩 방법은 아니지만 수행하려고하는 작업을 수행 할 것입니다.

$json = json_encode($myInstance->getData($id)); 
$result = json_decode($json,true); 

foreach ($result as $value) { 
    foreach($value as $value_detail) { 
     echo '<div>'.$value_detail['name'].'</div>'; 
    } 
} 

등 당신의 JSON에서 첫 번째 수준의 모든 항목과 세 번째 항목에서 세 번째 첫 번째 항목, 두 번째 항목에서 두 번째 이름의 첫 번째 이름을 표시 통해 코드의 뜻 루프,

$json 배열이 3D이기 때문에 발생한 문제 일 수 있습니다. 그런 경우

[0 => 
    [ 
    ['name' => 'Foo'], ['name' => 'Bar'] 
    ] 
] 

다음은 foreach 루프가

foreach($result[0] as $value) { 
    echo '<div>'.$value['name'].'</div>'; 
} 

데이터가 어떻게 생겼는지 볼 수 var_dump($result);을 시도 할 수있는 사실을 발견했습니다.

+0

굉장한 d3v_1! 이 시점에서 왜 중첩 루프가 필요한지는 알 수 없습니다. 나는 당신의 대답을 가능한 빨리 받아들입니다. THX 많이 :) – Tobias

+0

$ json의 데이터는 키가 0 인 3D 배열 일 수 있습니다. 나는 설명 할 나의 대답을 편집 할 것이다. –