获取PHP Foreach循环中所有数组键的特定属性

时间:2013-03-26 03:14:18

标签: php multidimensional-array foreach simplexml

我正在使用从XML文件转换的多维PHP数组,并且正在努力从所有键名中获取特定属性(我不知道所有键的名称,但它们都具有相同的属性。)

“$ player_stats”中的每个键在数组中的结构如下:

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

    )

我正在尝试实现类似下面的内容。使用$ key =>时,我无法从键中获取属性$值?

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

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

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

$ key在这个例子中起作用,但我尝试抓取的属性没有。在不知道键名的情况下获取所有键的特定属性的任何提示或指针都会很棒,谢谢!

编辑:

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>

1 个答案:

答案 0 :(得分:0)

如果我理解正确,$ value是一个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>";
}