未定义的偏移量:列表中的1($ level [$ xml_elem [' level']],$ extra)= array_values($ xml_elem [' attributes']);

时间:2012-09-05 09:30:27

标签: arrays list xml-parsing

所以我正在为某人设置DPS,我的xml_parse中有一点错误。我正在使用DPS的示例代码(http://www.paymentexpress.com/Technical_Resources/Sample_code_-_PHP/PX_Post_-_cURL.aspx),我已将其修改为与PxPay一起使用。我的问题是它正在吐出一个错误,我不知道代码在做什么,所以不确定出了什么问题

这是我的代码

function parse_xml($data){
$xml_parser = xml_parser_create();
xml_parse_into_struct($xml_parser, $data, $vals, $index);
xml_parser_free($xml_parser);     
$params = array();
$level = array();
foreach ($vals as $xml_elem) {
    if ($xml_elem['type'] == 'open') {
        if (array_key_exists('attributes',$xml_elem)) {
            list($level[$xml_elem['level']],$extra) = array_values($xml_elem['attributes']);
        } else {
            $level[$xml_elem['level']] = $xml_elem['tag'];
        }
    }
    if ($xml_elem['type'] == 'complete') {
        $start_level = 1;
        $php_stmt = '$params';             
        while($start_level < $xml_elem['level']) {
            $php_stmt .= '[$level['.$start_level.']]';
            $start_level++;
        }
        $php_stmt .= '[$xml_elem[\'tag\']] = $xml_elem[\'value\'];';
        eval($php_stmt);
    }
}
}

我在这一行收到“未定义的偏移:1”错误

list($level[$xml_elem['level']],$extra) = array_values($xml_elem['attributes']);

据我所知,它向我吐出的东西就像下面的

<Request valid="1">
    <URI>https://sec.paymentexpress.com/pxpay/pxpay.aspx?userid=Samplepxpayuser&amp;request=v5x4Ygc8SJlc3FLYva7pIp6QHqKiSatHN8sNMufz-NNrOGJXn0TJf5TOIVNwQRyNqPo9cPMUfXWJkxjAGGDGDzhkwFD6VxRD2KesUBcmD5ViwVnb4va16zLih9VmKlipvEelGaYsF3fCqudnaWV1abz6f8VNKJOhGeypImjWk9I9xV0-iZh860FPcOam_UVHe81aQ4C2LJKB_znLiWqALSeeOHskI9vxdPOfcsfO7xXOuSMVXsKK6kVX4eZjcODKS1JGKP97fhb4gI2vpR7KUwIGC7U9VkXkPQfAGyYuP1g8x0QR1kC6eNzov3-W48OyvQ1_Fabn8cc1deTrsk6s3bPj3dgrlcXUfnFvmSOemB4rs-ixPDwQcaEsZWQvUcIsaPXAWfQdgtC0dETayY_wVFN8yVmljpCZweiGyNhUHhYGIWLEGuP_Le1HwyHXc_fMaQOeqdZNrFBviCJyWZ2HKferSEwkyQqMmq</URI>
</Request>

有没有人有DPS的经验或知道这里可能出现的问题?

我收到了结果但是我的错误报告中仍然存在这个错误

修改

不再需要这个。此代码现已过时

1 个答案:

答案 0 :(得分:0)

eval($php_stmt);替换为if (isset($xml_elem['value'])) { eval($php_stmt); }