$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>
и мой код возвращает только первую запись, но я хочу получить обе записи, может ли кто-нибудь мне помочь?
Я не уверен, что именно вы хотите вывести, но, возможно, это подойдет вашей цели.
Код ниже преобразует 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"...
Ссылка:
Обновить:
Чтобы получить доступ к какому-то конкретному элементу многомерного массива:
$someVar = $arrayMD["draw"][0]["result"][7];
echo $someVar; // outputs: 12
Кроме того, посмотрите на список функция (назначает переменные, как если бы они были массивом) или экстракт (импортирует переменные в текущую таблицу символов из массива).
Или самый простой способ — использовать несколько для каждого для их вывода суммируйте числа, выбирайте каждое пятое значение «результата» каждого «розыгрыша» или что-либо еще. (Это зависит от того, что вы собираетесь делать с этими значениями дальше.)
Других решений пока нет …