簡體   English   中英

XML多維數組,排序和引用

[英]XML Multidimensional Array, Sort and reference

我真的根本沒有得到數組,我已經閱讀了很多例子,大部分抄襲和修改過,還沒有找到幫助,我知道我希望有人可以幫助我,所以我完全理解。

我有一個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的代碼是否很好? 有沒有更好的方法可以使用? 如何排序結果? 如何輸出各個字段?

您的幫助,示例和指導將不勝感激,

斯圖

// -----------------------更新----------------------- \\

好的,所以這是我現在建議使用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/>";

您編寫的用於讀取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。

注意:就結果排序而言,實際上值得進行對象到數組的轉換。 PHP中的所有排序功能都適用於數組, 而不適用於對象。

希望這可以幫助!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM