2011-06-16 31 views
0

我真的没有获得数组,我已经阅读了很多例子,大多数剽窃和修改,我还没有找到帮助,我明白我希望有人可以走过我这样,所以我完全理解。XML多维数组,排序和引用

我有一个XML文件,我需要阅读并显示带有PHP选项的选项,然后将所需的字段输出到我的页面中。我已设法检索XML文件并在本地安置,并检查文件的年代(里程碑),并使用下面的代码设法读取XML文件并将其作为数组输出,但我无法继续,并且在两次之后天,我把你的社会提供援助:

<?php 

function std_class_object_to_array($stdclassobject) { 
    $_array = is_object($stdclassobject) ? get_object_vars($stdclassobject) : $stdclassobject; 

    foreach ($_array as $key => $value) { 
    $value = (is_array($value) || is_object($value)) ? std_class_object_to_array($value) : $value; 
    $array[$key] = $value; 
    } 
    return $array; 
    } 

    $request = $domain.$filename; 
    $API_results = file_get_contents($request); 
    $xml = new SimpleXMLElement($API_results); 
    $Details = std_class_object_to_array($xml); 

echo "<pre>"; 
print_r($Details[hotel]); 
echo "</pre>"; ?> 

输出看起来像这样(缩短)

Array 
(
    [0] => Array 
     (
      [hotel_ref] => 157258 
      [hotel_name] => Hotel Kong Arthur 

继续

[1] => Array 
    (
     [hotel_ref] => 98813 
     [hotel_name] => Hotel Lautruppark 

首先是我用过的代码阅读XML的好处?有没有更好的方法可以使用?我如何对结果进行排序?我如何输出个别字段?

您的帮助,实例和方向将不胜感激,

斯图

// ----------------------- UPDATE ----------------------- \

好的,所以这是我现在正在建议使用SimpleXML,但它仍然不正确我并没有进一步讨论:

$request = $domain.$filename; 
$xmlobj = simplexml_load_file($request); 
$xml = simplexml_load_file($request) or die("NO XML"); 
foreach($xml as $hotels) 
echo $hotels->hotel_name." (".$hotels->hotel_ref.")<br/>"; 
+2

为什么不使用SimpleXmlElement?为什么它必须是一个数组呢? – Gordon 2011-06-16 14:37:39

+0

现在尝试了很多东西,我不记得了。现在正在阅读 – Stuart 2011-06-16 14:48:17

+0

您可以发布一些xml数据,并且只需要如何分类? – Yoshi 2011-06-16 14:59:50

回答

1

你写的代码阅读XML绝对没问题。

但是,由于SimpleXMLElement已经可迭代,所以您不必要地将SimpleXMLElement对象转换为数组。您可以访问XML的<hotel>元素简单,如:

$Details->hotel[0] 

您可以通过以下通过<hotel>子元素迭代:

<?php 
// Loop through the elements, and with each... 
foreach($Details->hotel[0] as $index => $hotel) { 
    // ...output the name of the hotel: 
    echo $hotel->hotel_name; 
} 
?> 

这里,$index将是数字索引,并$hotel将是另一个SimpleXMLElement。

N.B.在排序结果方面,它可能实际上值得做对象到数组的转换。 PHP中的所有排序功能在阵列上工作,而不是对象。

希望这会有所帮助!

+0

仍然是一个,但困惑在这里,你说我是“不必要地从SimpleXMLElement对象转换为阵”,并声称“在排序结果来看,它实际上可能是值得做的对象 - 数组转换” 那么我会不会将XML转换为数组的排序和输出?所有非常混乱。 – Stuart 2011-06-21 10:37:40

+0

@Stuart:抱歉有什么困惑 - 我应该重新解释我的答案!如果您需要对结果进行排序,则只应该将XML对象用于数组转换。 – 2011-08-10 14:31:19