2013-03-26 17 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 2013-03-26 03:17:42

+0

这些键实际上并没有在XML文件中的值,他们只是添加了属性,这就是我所追求的。所以$值是空的。 foreach $ key => $ value只是我知道如何在不知道实际名称的情况下访问所有密钥的唯一方式:/ – taylor 2013-03-26 03:21:52

+0

由于PHP数组深度不止一个级别,也许您的行为不够深入? – Patashu 2013-03-26 03:24:16

回答

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 2013-03-26 03:49:07