ホームページ >バックエンド開発 >PHPチュートリアル >SimpleXML_PHP チュートリアルに関するいくつかの注意事項

SimpleXML_PHP チュートリアルに関するいくつかの注意事項

WBOY
WBOYオリジナル
2016-07-13 17:39:28786ブラウズ

SimpleXML は、XML 操作の効率を大幅に向上させる、シンプルで高速な XML 操作メソッドのセットを提供します。しかし、場合によっては不注意が大きな問題を引き起こす可能性があります。次のコードを見てください。

$xml = simplexml_load_string(title);

$title = $xml->タイトル

echo $title;

$xml->title = テスト;

エコー $タイトル


2 番目の出力結果は何になると思いますか? これはテストであり、想像したタイトルではありません。なぜそうなるのでしょうか?その理由は次のとおりです:

echo gettype($xml->title) // オブジェクト

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

;


ご覧のとおり、$xml->title は文字列ではなく、SimpleXMLElement クラスのインスタンスです。したがって、$title は実際には文字列のコピーではなく、SimpleXMLElement クラスへの参照を保持します。文字列のコピーを取得したい場合は、型変換のみを実行できます:

$title = (string)$xml->title; // 文字列を取得します

$xml->title = テスト;

echo $title; // タイトルを出力します


SimpleXMLElement は、__tostring() に似たインターフェースを実装する必要があります (興味がある場合は、「ext/simplexml/」にある PHP のソース コードを参照してください)。これにより、次のような式内の文字のように動作できます。エコー文字列として。注意する必要があることがもう 1 つあります:

$_SESSION[test] = $xml->title; // SimpleXMLElement 変数を SESSION に保存します。

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

$_SESSION[test] = strval($xml->title); // これも機能します。


http://www.bkjia.com/PHPjc/486307.html

www.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/486307.html技術記事 SimpleXML は、XML 操作の効率を大幅に向上させる、シンプルで高速な XML 操作メソッドのセットを提供します。しかし、場合によっては不注意が大きな問題を引き起こす可能性があります。次のコードを見てください。 $xml = s...
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。