2013-03-26 2 views
0

Я работаю с многомерным массивом PHP, который преобразуется из XML-файла, и я изо всех сил пытаюсь захватить определенные атрибуты из всех имен ключей (я не знаю . имя всех ключей, но все они имеют те же атрибуты)Получить определенные атрибуты всех ключей Array в PHP Foreach Loop

Каждый ключ внутри «$ 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>"; 
} 

$ 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> 
+0

$ value-> подборы? – 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