xml 导出 php 代码仅返回 xml 文件的一个父级,我需要它们
Posted
技术标签:
【中文标题】xml 导出 php 代码仅返回 xml 文件的一个父级,我需要它们【英文标题】:xml export php code returns only one parent of the xml file i need them all 【发布时间】:2015-03-02 12:14:52 【问题描述】: $rss_tags = array(
'drawNo',
'drawTime',
'result',
);
$rss_item_tag = 'draw';
$rss_url = "http://applications.opap.gr/DrawsRestServices/kino/drawDate/21-12-2014.xml";
$rssfeed = rss_to_array($rss_item_tag,$rss_tags,$rss_url);
echo '<pre>';
print_r($rssfeed);
/*$total=1;
foreach($rssfeed as $item)
if($total<750)
echo '<div><h1>Κλήρωση: '.$item['drawNo']. ' Αριθμοί: ' .$item['result'].'</h1></div>';
$total++;
*/
function rss_to_array($tag, $array, $url)
$doc = new DOMdocument();
$doc->load($url);
$rss_array = array();
$items = array();
foreach($doc->getElementsByTagName($tag) AS $node) //se auth thn epanalhpsh epanalamvenete toses fores oses oi klhrwseis tis hmeras
foreach($array AS $key => $value) //$array einai ta rss tags
if($value=="result")
for($i=1;$i<=20;$i++)$items["result"] = $node->getElementsByTagName("result")->item(0)->nodeValue;
$items[$value] = $node->getElementsByTagName($value)->item(0)->nodeValue;
array_push($rss_array, $items);
return $rss_array;
你好phpers,这是我读取一些xml信息的代码,但我有一个很大很大的问题。
首先检查xml源: http://applications.opap.gr/DrawsRestServices/kino/drawDate/21-12-2014.xml
结构是这样的:
<draws>
<draw>
<drawNo>
<drawTime>
<result>
<result>
<result>
<result>
<result>
<result>
<result>
<result>
<result>
<result>
<result>
<result>
<result>
<result>
<result>
<result>
<result>
<result>
<result>
<result>
我的代码只返回第一个条目,但我想同时获得 20 个条目,有人可以帮我吗?
【问题讨论】:
【参考方案1】:我不确定你到底想输出什么,但也许这会适合你的目的。
下面的代码将 xml 转换为数组。
<?php
$xmlstring = file_get_contents("http://applications.opap.gr/DrawsRestServices/kino/drawDate/21-12-2014.xml");
// converts $xmlstring to multidimensional array
$arrayMD = json_decode(json_encode((array) simplexml_load_string($xmlstring)), true);
echo "<pre>";
var_dump($arrayMD);
echo "</pre>";
// converts multidimensional array to one-dimensional array
// in other words: "flattens" a multidimensional array
$array = new RecursiveIteratorIterator(new RecursiveArrayIterator($arrayMD));
foreach($array as $v)
echo $v . "<br>";
?>
输出如下:
array(1)
["draw"]=>
array(157)
[0]=>
array(3)
["drawNo"]=>
string(6) "475781"
["drawTime"]=>
string(25) "2014-12-21T09:00:00+02:00"
["result"]=>
array(20)
[0]=>
string(1) "6"
[1]=>
string(1) "7"
[2]=>
string(2) "12"
[3]=>
string(2) "13"
[4]=>
string(2) "15"
[5]=>
string(2) "16"
...
参考:
simplexml_load_string json_encode json_decode(当第二个参数设置为TRUE时,返回的对象将被转换为关联数组。) JSON Predefined Constants (array) - 转换为数组,Type Juggling How to Flatten a Multidimensional Array?更新:
访问多维数组的某些特定元素:
$someVar = $arrayMD["draw"][0]["result"][7];
echo $someVar; // outputs: 12
此外,请查看list 函数(将变量分配为数组)或extract(将变量从数组导入当前符号表)。
或者最简单的方法就是使用几个foreach 来输出它们,将数字相加,选择每个“平局”的每五个“结果”值或其他任何东西。 (这取决于您接下来要如何处理这些值。)
【讨论】:
Dmytro 你能告诉我如何把所有这些 [0]=> string(1) "6" [1]=> string(1) "7" [2]=> string( 2) "12" [3]=> string(2) "13" [4]=> string(2) "15" [5]=> string(2) "16" 转换成变量,以便我可以使用它们? echo $array['draw'][$k]['result'][$i] 这是答案谢谢 dmytro以上是关于xml 导出 php 代码仅返回 xml 文件的一个父级,我需要它们的主要内容,如果未能解决你的问题,请参考以下文章