2012-06-26 3 views
0

Хорошо Так Heres вопроса, используя API (Lyris HQ) я возвращаю этот XML DataSetМассив из вопросов XML с помощью SimpleXMLElement

<DATASET> 
    <TYPE>success</TYPE> 
    <RECORD> 
     <DATA type="name" id="205199">Dev1</DATA> 
     <DATA type="messages">4</DATA> 
     <DATA type="last-sent">Jun. 26, 2012</DATA> 
     <DATA type="members">1</DATA> 
     <DATA type="status">active</DATA> 
     <DATA type="cache-time">2012-06-26T18:21:18+00:00</DATA> 
    </RECORD> 
    <RECORD> 
     <DATA type="name" id="206378">Dev2</DATA> 
     <DATA type="messages">1</DATA> 
     <DATA type="last-sent"></DATA> 
     <DATA type="members">2</DATA> 
     <DATA type="status">active</DATA> 
     <DATA type="cache-time">2012-05-31T14:47:12+00:00</DATA> 
    </RECORD> 
    <RECORD> 
     <DATA type="name" id="206379">Dev3</DATA> 
     <DATA type="messages">1</DATA> 
     <DATA type="last-sent"></DATA> 
     <DATA type="members">1</DATA> 
     <DATA type="status">active</DATA> 
     <DATA type="cache-time">2012-05-31T14:47:12+00:00</DATA> 
    </RECORD> 
    <RECORD> 
     <DATA type="name" id="206380">Dev4</DATA> 
     <DATA type="messages">1</DATA> 
     <DATA type="last-sent"></DATA> 
     <DATA type="members">1</DATA> 
     <DATA type="status">active</DATA> 
     <DATA type="cache-time">2012-05-31T14:47:12+00:00</DATA> 
    </RECORD> 
</DATASET> 

То, что я пытаюсь сделать, это создать массив, используя SimpleXMLElement с помощью то в этом формате рекурсивно

$response = array(
    '{listid (id attribute from name element)}' => array(
     '{other attribute type}' => '{value}' 
    ), 
); 

пример этого с помощью dev1 (первая запись)

$response = array(
    '205199' => array(
     'name' => 'Dev1', 
     'messages' => '4', 
     'last-sent' => 'Jun. 26, 2012', 
     'members' => '1', 
     'status' => 'active', 
     'cache-time' => '2012-06-26T18:21:18+00:00' 
    ), 
); 

меня и несколько членов веб-команды здесь немного набросились на это, и я не получаю там, поэтому я надеюсь, что смогу получить помощь от ульев, так сказать, lol

heres жалкий пример о том, что я был в последний раз пытаюсь использовать, чтобы получить мой результат, который не удался, очевидно

foreach ($responseobj->RECORD as $value) { 

     $returnarray[(string)$value->DATA['id']] = array(); 

     foreach ($value->DATA as $k => $v) { 
      echo '<pre>'; 
      print_r($v); 
      echo '</pre>'; 


      $returnarray[(string)$v['id']] = array((string)$v['type'] => (string)$v,); 
     } 
    } 
+0

использования '-> атрибутов()', он используется для, вы знаете, чтение атрибутов;) – Wrikken

+1

я попытался это, но атрибуты могут быть доступны как ключи массива, как я сделал в $ returnarray [(string) $ v ['id']] = array ((string) $ v ['type'] => (string) $ v ,); линия. –

+0

Хм, он может теперь? Хорошо знать. Конечно, это просто '$ returnarray [(string) $ value-> DATA ['id']] [(string) $ v ['type']] = (string) $ v;' в цикле. – Wrikken

ответ

0
<?php 
$x = simplexml_load_file('example.xml'); 
$returnarray = array(); 
foreach($x->RECORD as $value){ 
    $returnarray[(string)$value->DATA['id']] = array(); 
    foreach ($value->DATA as $k => $v) { 
     $returnarray[(string)$value->DATA['id']][(string)$v['type']] = (string)$v; 
    } 
} 
var_dump($returnarray); 
+0

Вы, сэр, бог! –

Смежные вопросы