0

さて、ここに問題があります。API(lyris hq)を使用して、このxmlデータセットが返されます。

<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'
    ),
);

私とここのウェブチームの何人かのメンバーはしばらくの間これに頭を悩ませていて、どこにも行き着いていないので、いわばハイブの心からいくつかの助けを得ることができることを願っています笑

これは、明らかに失敗した結果を得るために私が最後に使用しようとしたものの哀れな例です

    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,);
        }
    }
4

1 に答える 1

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);
于 2012-06-26T19:42:34.727 に答える