2012-12-15 2 views
1

내가이 XML 구조했습니다 필요SimpleXML을 요소는 첫 번째 요소를 추출하지만 난 모든 요소

<response status="success"> 
<campaign> 
<id>1</id> 
<nameCampaign>Raccolta Punti CCN</nameCampaign> 
<type>points</type> 
<balances> 
    <balance>10.00 </balance> 
    </balances> 
</campaign> 
<campaign> 
<id>6</id> 
<nameCampaign>Abbonamenti</nameCampaign> 
<type>subscription</type> 
    <balances> 
    <balance>6.00 Lampada solare</balance> 
    </balances> 
    <balances> 
    <balance>4.00 doccia solare</balance> 
    </balances> 
    <balances> 
    <balance>3.00 trifacciale</balance> 
    </balances> 
</campaign> 
</response> 

을 내가 배열의 변환이 필요합니다.

내가

foreach($result->campaign as $bilancio) { 
    $balance[] = array ( 'nameCampaign' => (string)$bilancio->nameCampaign, 
          'balances'  => (string)$bilancio->balances->balance );  
} // foreach 

를 사용하는 경우 나 ID 6은 세 개의 하위 노드 (balances-> 균형) 및뿐만 아니라 하나를 가지고, 당신은주의 수있는 방법이 배열을

Array 
    (
[0] => Array 
    (
     [nameCampaign] => Raccolta Punti CCN 
     [balances] => 10.00 
    ) 

[1] => Array 
    (
     [nameCampaign] => Abbonamenti 
     [balances] => 6.00 Lampada solare 
    ) 
) 

을 구하십시오. 어떻게 내가 완전한 어레이를 얻을 수 있었 을까?

감사합니다. 멋진 주말 보내세요!

답변

1

읽기 대신 (항상 simeplxml의 첫 번째 요소 만 제공), 모든 요소에 대해 foreach을 반복 실행합니다.

$balance = array(); 
foreach ($result->campaign as $campaign) 
{ 
    $arr = array(); 
    foreach ($campaign->balances as $campaignBalance) 
    { 
     $arr[] = (string) $campaignBalance->balance; 
    } 

    $balance[] = array(
     'nameCampaign' => (string) $campaign->nameCampaign, 
     'balances'  => $arr 
    ); 
} 

print_r($balance); 

당신이 결과를 줄 것이다 :

Array 
(
    [0] => Array 
     (
      [nameCampaign] => Raccolta Punti CCN 
      [balances] => Array 
       (
        [0] => 10.00 
       ) 
     ) 
    [1] => Array 
     (
      [nameCampaign] => Abbonamenti 
      [balances] => Array 
       (
        [0] => 6.00 Lampada solare 
        [1] => 4.00 doccia solare 
        [2] => 3.00 trifacciale 
       ) 
     ) 
) 
+0

매우 감사를

는 여기에 방법! – sineverba

+0

@Dale : 답을 편집 한 결과,'count()'가 불필요합니다. 'foreach'는 하나 또는 그 이상의 요소를 0으로 할 수 있습니다. 그것은 반복의 이점이며, 선행 할 필요가 없습니다. – hakre

+0

@hakre, 그 축하하는 충동을 몰랐습니다. – Dale

관련 문제