2013-03-26 3 views
0

XML 파일에서 변환 된 다차원 PHP 배열로 작업 중이며 모든 키 이름의 특정 특성을 얻기 위해 고심 중입니다. . 모든 키의 이름,하지만 그들은 모두 같은 특성을 가지고)PHP Foreach 루프의 모든 배열 키에 대한 특정 속성 얻기

각 키 내부에 "$ player_stats은"배열에 다음과 같이 구성되어있다 :

[RandomKeyName] => SimpleXMLElement Object 
    (
     [@attributes] => Array 
      (
       [assists] => 0.10 
       [rebounds] => 8 
       [operator] => > 
       [overall] => 1.45 
      ) 

    ) 

나는 다음과 같은 무언가를 달성하기 위해 노력하고있어 . $ key => $ value를 사용할 때 키에서 속성을 가져올 수 없습니까?

foreach ($player_stats as $key => $value) { 

    $rebounds = $key->rebounds; 
    $assists = $key->assists; 

    echo "$key has $rebounds Rebounds and $assists Assists. <br>"; 
} 

$이 예제에서는 $ 키가 작동하지만 잡으려고 시도한 속성은 작동하지 않습니다. 키 이름을 모르더라도 모든 키의 특정 속성을 잡는 데 도움이되는 정보 나 팁이 있으면 좋을 것입니다. 감사합니다!

편집 : 나는의 키 객체를 얻기 위해 노력하고있어 XML의

부분 :

내가 제대로 이해했다면
<Player_Stats> 
    <RandomKeyName1 assists="0.04" rebounds="9" operator="&gt;" overall="0.78" /> 
    <RandomKeyName2 assists="0.04" rebounds="4" operator="&gt;" overall="2.07" /> 
    <RandomKeyName3 assists="0.04" rebounds="1" operator="&gt;" overall="3.76" /> 
    <RandomKeyName4 assists="0.04" rebounds="10" operator="&gt;" overall="0.06" /> 
</Player_Stats> 
+0

$ value-> rebounds? – Patashu

+0

키는 XML 파일에 실제로 값을 가지고 있지 않으며, 단지 내가 선택한 속성을 추가했습니다. 그래서 $ 값은 비어 있습니다. foreach $ key => $ value는 실제 이름을 모른 채 모든 키에 액세스하는 방법을 알고있는 유일한 방법입니다./ – taylor

+0

PHP 배열이 한 레벨 이상 깊기 때문에 어쩌면 충분히 깊이 가지 않을 수 있습니까? – Patashu

답변

0

, $ 값이 SimpleXMLElement 개체입니다. SimpleXMLElement::attributes을 사용하여 속성을 가져올 수 있습니다.이 속성은 다른 foreach로 반복 할 수 있습니다.

다음과 같이 표시됩니다 (직접 테스트 한 것은 아니지만).

foreach ($player_stats as $xmlKey => $xmlElement) { 

    foreach ($xmlElement->attributes() as $attrKey => $value) { 

     if ($attrKey === 'rebounds') 
      $rebounds = $value; 

     if ($attrKey === 'assists') 
      $assists = $value; 

    } 
    echo "$xmlKey has $rebounds Rebounds and $assists Assists. <br>"; 
} 
+0

과 함께 작업하고 있습니다. 실제로 조정하지 않아도되었습니다. 완전한! 이제는 내가해야 할 일에 대해 훨씬 더 잘 이해하게되었습니다. 감사! – taylor