目次
ディスカッションへの返信 (解決策)
ホームページ バックエンド開発 PHPチュートリアル オブジェクトが同時に配列になるにはどうすればよいでしょうか?

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

Jun 23, 2016 pm 02:08 PM

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 方法返回的数组进行操作
你那样写也是可以的

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットな記事タグ

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

11ベストPHP URLショートナースクリプト(無料およびプレミアム) 11ベストPHP URLショートナースクリプト(無料およびプレミアム) Mar 03, 2025 am 10:49 AM

11ベストPHP URLショートナースクリプト(無料およびプレミアム)

Laravelでフラッシュセッションデータを使用します Laravelでフラッシュセッションデータを使用します Mar 12, 2025 pm 05:08 PM

Laravelでフラッシュセッションデータを使用します

Instagram APIの紹介 Instagram APIの紹介 Mar 02, 2025 am 09:32 AM

Instagram APIの紹介

Laravelテストでの簡略化されたHTTP応答のモッキング Laravelテストでの簡略化されたHTTP応答のモッキング Mar 12, 2025 pm 05:09 PM

Laravelテストでの簡略化されたHTTP応答のモッキング

LaravelのバックエンドでReactアプリを構築する:パート2、React LaravelのバックエンドでReactアプリを構築する:パート2、React Mar 04, 2025 am 09:33 AM

LaravelのバックエンドでReactアプリを構築する:パート2、React

PHPのカール:REST APIでPHPカール拡張機能を使用する方法 PHPのカール:REST APIでPHPカール拡張機能を使用する方法 Mar 14, 2025 am 11:42 AM

PHPのカール:REST APIでPHPカール拡張機能を使用する方法

Codecanyonで12の最高のPHPチャットスクリプト Codecanyonで12の最高のPHPチャットスクリプト Mar 13, 2025 pm 12:08 PM

Codecanyonで12の最高のPHPチャットスクリプト

Laravelの通知 Laravelの通知 Mar 04, 2025 am 09:22 AM

Laravelの通知

See all articles