コンテキストに関係なく、SimpleXML オブジェクトを文字列に強制する 質問する

コンテキストに関係なく、SimpleXML オブジェクトを文字列に強制する 質問する

次のようなXMLがあるとします

<channel>
  <item>
    <title>This is title 1</title>
  </item>
</channel>

以下のコードはタイトルを文字列として出力することで私の望みどおりのことをします

$xml = simplexml_load_string($xmlstring);
echo $xml->channel->item->title;

ここに問題があります。以下のコードでは、そのコンテキストではタイトルを文字列として扱わないため、配列内に文字列ではなく SimpleXML オブジェクトが含まれてしまいます。

$foo = array( $xml->channel->item->title );

私はこのように対処してきました

$foo = array( sprintf("%s",$xml->channel->item->title) );

しかしそれは醜いようです。

コンテキストに関係なく、SimpleXML オブジェクトを強制的に文字列にする最適な方法は何ですか?

ベストアンサー1

SimpleXMLObject を文字列に型変換します。

$foo = array( (string) $xml->channel->item->title );

上記のコードは内部的に__toString()SimpleXMLObject を呼び出します。このメソッドは SimpleXMLObject のマッピング スキームに干渉するため公開されていませんが、上記の方法で呼び出すことは可能です。

おすすめ記事