2013-07-16 2 views
0

임은 현재 일부 PHP와 JSON과 장난 배열을 출력 문제를 PHP로하지만 중간에 대해 얻을 수 있었다 필자.JSON은, 내가 PHP JSON의 거의 아무것도 abit를 알고

<?php 
$json = file_get_contents('http://eu.battle.net/api/wow/character/Ragnaros/Smoosher?fields=progression'); 
$data = json_decode($json, true); 

foreach ($data['progression']['raids'] as $raid) { 
    echo "Raid: ", $raid['name']; 
    echo " Normal: ", $raid['normal']; 
    echo " Heroic: ", $raid['heroic']; 
    echo " id: ", $raid['id']; 
    echo " Boss's: ", $raid['bosses']['name']; 
    ?> 
    <p> 
    <?php 
}; 

foreach ($data['progression']['raids']['bosses'] as $boss) { 
    echo " Boss Name: ", $boss['name']; 
} 

print_r($boss); 
#echo $data->name; 
?> 

지금 첫 번째 foreach 문이 잘 작동 듯하지만 내가 눈치가 미세 페이지에 출력 데이터를 가져옵니다 것이 무슨 문제가 또 다른 (배열?) 수 없습니다 내가 밖으로 내가 먼저 그렇게 퍼팅 된 하나에 배열 내에서 단어 상사의, 아무것도 아무것도 출력하지

echo " Boss's: ", $raid['bosses']['name']; 

을 시도, 그래서 어쩌면 내가 다른 foreach 문이 필요하고 그것을 통해 당겨 시작 생각했다. 그러나이 부분

foreach ($data['progression']['raids']['bosses'] as $boss) { 
    echo " Boss Name: ", $boss['name']; 
} 

오류

Warning: Invalid argument supplied for foreach() in xxxxxx/xx/xxxxx/wow/test.php on line 22 

를 제공 그리고 난에서 당기는 JSON의 메신저

http://eu.battle.net/api/wow/character/Ragnaros/Smoosher?fields=progression 

답변

2

입니다 잘못하고 :(어떤 도움이 좋을 것 어떤 메신저를 볼 수 없습니다 귀하의 여기서 문제가 $data['progression']['raids']['bosses'] 배열 없다는 것이다.

$data['progression']['raids']는 아칸소 데이터는 다음과 같습니다 있도록 배열의 선, 그 배열의 각각은 bosses 키가 :

$data['progression']['raids'][0]['bosses'] - 반대로, 거기에 [0]주의 단지 $data['progression']['raids']['bosses'] 당신은 bosses에 둥지 루프 내에서해야

이전 루프, 예.

<?php 
$json = file_get_contents('http://eu.battle.net/api/wow/character/Ragnaros/Smoosher?fields=progression'); 
$data = json_decode($json, true); 

foreach ($data['progression']['raids'] as $raid) 
{ 
echo "Raid: ", $raid['name']; 

echo " Normal: ", $raid['normal']; 

echo " Heroic: ", $raid['heroic']; 

echo " id: ", $raid['id']; 

foreach ($raid['bosses'] as $boss) 
{ 
    echo " Boss Name: ", $boss['name']; 
} 
?> 
<p> 
<?php 
}; 
+0

내가보기에 루프 내에서 먼저 루프를 시도해야한다.하지만 물어보기 전에 루프가 먼저 도움이된다. 타이머에 부착 된 –

+0

참으로 내가 그것을 받아 들일 전에 5 분을 기다려야했다 :( –

1
$data['progression']['raids'] 

이 변수는 배열이다. 이 배열에서 foreach를 사용할 수 있습니다.

foreach($data['progression']['raids'] as $raid) { 
    forach($raid['bosses'] as $boss) { 
     //here is your boss 
    } 
} 
1

세컨드의 foreach 본 같이 작성한다 : - $ 데이터 [ '진행'] [ '단속'] 안에 배열을 유지하고 [ '보스'] $ 데이터 [용 부재 등의 배열 요소를 갖는다 '진행'] [ '습격'].

foreach ($data['progression']['raids'] as $boss) 
foreach($boss['bosses'] as $boss1) 
{ 
    echo " Boss Name: ", $boss1['name']; 
    echo '<br>'; 
}