程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> 關於PHP編程 >> SimpleXML的一點注意事項

SimpleXML的一點注意事項

編輯:關於PHP編程

SimpleXML提供了一套簡單快速的XML操作方法,大大地提高了XML操作的效率。但是有時不小心也會帶來不小的麻煩,看下面一段代碼:

$xml = simplexml_load_string(<root><title>title</title></root>);

$title = $xml->title;

echo $title;

$xml->title = test;

echo $title;
 


猜猜第二個輸出結果會是多少?是test,而不是想像中的title。為什麼會這樣呢?原因在這裡:

echo gettype($xml->title)  // object

echo get_class($xml->title);  // SimpleXMLElement
 


看到了嗎,$xml->title是一個SimpleXMLElement類的實例,而不是字符串。所以$title實際上保存的是一個到SimpleXMLElement類的一個引用,而不是字符串的副本。想要得到字符串的副本只能進行類型轉換:

$title = (string)$xml->title; // 獲得字符串

$xml->title = test;

echo $title; // 輸出title
 


SimpleXMLElement應該是實現了一個類似於__tostring()的接口(有興趣的可以去看一下PHP的源碼,在"ext/simplexml/"中),才能在echo等表達式中表現類似於一個字符串。所以還有個地方需要注意:

$_SESSION[test] = $xml->title; // 保存一個SimpleXMLElement變量到SESSION中。

$_SESSION[test] = (string)$xml->title; // 字符串

$_SESSION[test] = strval($xml->title); // 這樣也行。
 

 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved