xml 导出 php 代码 returns 只有 xml 文件的一个父文件我需要它们
xml export php code returns only one parent of the xml file i need them all
$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>
和我的代码 returns 只是第一个条目,但我想同时获得这 20 个条目,有人可以帮助我吗?
我不确定你到底想输出什么,但这也许适合你的目的。
下面的代码将 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
- (数组) - 转换为数组,Type Juggling
- How to Flatten a Multidimensional Array?
更新:
要访问多维数组的某些特定元素:
$someVar = $arrayMD["draw"][0]["result"][7];
echo $someVar; // outputs: 12
此外,请查看 list function (assigns variables as if they were an array) or extract(将变量从数组导入当前交易品种 table)。
或者最简单的方法就是使用几个 foreach 来输出它们,对数字求和,select 每五个 "result" 每个 "draw" 的值或其他任何值. (这取决于您接下来要如何处理这些值。)
$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>
和我的代码 returns 只是第一个条目,但我想同时获得这 20 个条目,有人可以帮助我吗?
我不确定你到底想输出什么,但这也许适合你的目的。
下面的代码将 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
- (数组) - 转换为数组,Type Juggling
- How to Flatten a Multidimensional Array?
更新:
要访问多维数组的某些特定元素:
$someVar = $arrayMD["draw"][0]["result"][7];
echo $someVar; // outputs: 12
此外,请查看 list function (assigns variables as if they were an array) or extract(将变量从数组导入当前交易品种 table)。
或者最简单的方法就是使用几个 foreach 来输出它们,对数字求和,select 每五个 "result" 每个 "draw" 的值或其他任何值. (这取决于您接下来要如何处理这些值。)