PHP:从xml生成数组时非法偏移类型

时间:2015-01-08 18:16:45

标签: php arrays xml

为什么我在尝试构建数组时遇到Illegal offset type错误?

function tassi_parser() {
    $xml=simplexml_load_file('http://www.ecb.europa.eu/stats/eurofxref/eurofxref-daily.xml');
    foreach($xml->Cube->Cube->Cube as $tmp) {
        $results[$tmp['currency']] = $tmp['rate'];
    };
    return $results;
};

$tmp['currency']正确包含一个应该用作密钥的字符串,以便我无法理解问题是什么......

2 个答案:

答案 0 :(得分:1)

你必须将它强制转换为字符串:

$results[(string)$tmp['currency']] = (string)$tmp['rate'];

在foreach结束时的;和函数也是不必要的!

答案 1 :(得分:1)

simplexml_load_file返回SimpleXMLElement,每个xml元素都是一个对象。因此,foreach中$ tmp的类型是“object”(不是字符串),因此需要按如下方式将其强制转换为字符串:

(string)$tmp['currency']

您可以使用gettype函数来检索某些内容的类型:http://php.net/manual/en/function.gettype.php