ホームページ > バックエンド開発 > PHPチュートリアル > オブジェクトが同時に配列になるにはどうすればよいでしょうか?

オブジェクトが同時に配列になるにはどうすればよいでしょうか?

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
リリース: 2016-06-23 14:08:50
オリジナル
931 人が閲覧しました

simpleXML では、xml ファイルがオブジェクトに変換され、子ノードへのアクセスはオブジェクトのメンバー属性になります。次の XML ドキュメントがあります:

<?xml version="1.0" encoding="utf-8"?><books><book lang="中文"><name>如何成功?</name><author>张三</author><price>39.8</price></book><book lang="English"><name>成功人士应该有的特质</name><author>李四</author><price>42.8</price></book></books>
ログイン後にコピー


$xml_obj=simplexml_load_file("books.xml"); $books=$xml_obj->book;$book=$books[0]; //这是第一本书,他是一个对象,他下面的子节点可以通过访问他的成员方法获取,但是他的属性,,,,,,$lang=$book["lang"];//获取他的属性,lang。以数组的方式访问,但是他不是一个对象吗?
ログイン後にコピー


理解できないのは、ノード属性にアクセスする場合、配列でアクセスされますが、$book はオブジェクトです。どのようにして配列になったのでしょうか?


ディスカッションへの返信 (解決策)

http://www.php.net/manual/zh/class.arrayaccess.php

] => SimpleXMLElement オブジェクト
[著者] =>张三
> 39.8
------------------------------------------
SimpleXMLElement クラス
(バージョン情報はありません。SVN にのみ存在する可能性があります)
概要
要素ですXML ドキュメント内で
クラスの概要
SimpleXMLElement は Traversable {
……
--------------------------------- --------- ------------------------

Traversable は SPL のクラスです (現時点では詳細な紹介はありません)マニュアルに記載されていますが、php.net で見つけることができます)

短い抜粋をご紹介します


------------------------- -------------------- ------------------------------ -------

トラバース可能なインターフェース リファレンス
[Zend エンジン クラス]
foreach を使用してクラスがトラバース可能であることを検出するインターフェース。これは、それが反復可能なオブジェクトであることを意味します

以降:
PHP 5.0
単独で実装できない抽象ベース インターフェイス

注:
このインターフェイスを実装する内部クラスは、 foreach コンストラクトであり、IteratorAggregate または Iterator を実装する必要はありません。
これは、PHP スクリプトでは実装できないエンジン内部インターフェイスです。


ファイル spl.php の 509 行目の定義。


--------------- ---------------------------- ------------------ ---------------
このインターフェースのドキュメントは次のファイルから生成されました:
spl.php


[book] => Array
(
[0] => SimpleXMLElement Object
(
[@attributes] => Array
(
[lang] => 中文
)

[name] => 如何成功?
[author] => 张三
[price] => 39.8
)


[@attributes] => Array
ログイン後にコピー


这里的@是什么意思啊?我对正宗的数组var_dump没有出现这个@符号。

SimpleXMLElement 对象的属性数组
一般用遍历 attributes 方法返回的数组进行操作
你那样写也是可以的

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート