質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

オブジェクト

オブジェクト指向において、データとメソッドの集合をオブジェクト(Object)と呼びます。

Q&A

解決済

2回答

6859閲覧

var_dumpでオブジェクトの中身を表示した時にたまに出てくる「@」の意味を教えて下さい。

YorihiroKatsuki

総合スコア70

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

オブジェクト

オブジェクト指向において、データとメソッドの集合をオブジェクト(Object)と呼びます。

0グッド

0クリップ

投稿2016/04/03 14:12

###前提
PHPで郵便番号を取得するAPIを使って郵便番号を取得しようとしています。

###ソースコード

$url = "http://zip2.cgis.biz/xml/zip.php?zn=1130033"; $xml = simplexml_load_file($url); var_dump($xml);

エラーが発生しているわけではありませんが、var_dumpで表示した中身のソースを見た時に以下のような表現がありました。
[5]=>
object(SimpleXMLElement)#17 (1) {
["@attributes"]=>
array(1) {
["city"]=>
string(9) "文京区"
}
}

この中の@attributesの「@」の意味が分かりません。

ちなみに、schooの動画で勉強しているのですが、
実際に"文京区"と表示したい場合は以下のようなコードで表示するようなのですが、attributesのところだけattributes()と関数のような表現になっています。

echo (string)$xml->ADDRESS_value->value[5]->attributes()->city;

これは「@」が関係しているのかな、と勝手に想像しているのですが、この@の意味を教えて頂けますでしょうか。

###補足情報(言語/FW/ツール等のバージョンなど)
言語:PHP
ブラウザ:chrome

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

SimpleXMLElementクラスにおいて,属性は以下のいずれかのアクセス方法をとります.

php

1echo $node['attrName'];

php

1echo $node->attributes()->attrName;

前者があたかも配列のように見えますが,これは配列ではありません.SimpleXMLElementArrayAccessインタフェースを実装しているため,それっぽい書き方が出来るだけです.

なお,var_dumpの表示形式に従い

php

1echo $node->{"@attributes"}['attrName'];

としてもアクセスできるわけではありません.PHPのC言語レベルの拡張においては,var_dumpの表示形式を自由に変更することが出来ます.SimpleXMLElementDOMDocumentはだいぶ変更されていますね.PHP5.6以降はこの変更がマジックメソッド__debugInfo()を使ってユーザ側でもできるようになっています.

投稿2016/04/03 16:28

mpyw

総合スコア5223

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

mpyw

2016/04/03 16:44

「@」はどういう意味か? → 『「at」tributes』から分かる通り,attributesの略語です.かといって「@」だけだと意味が分かりにくいので「@attributes」としているんだと思います. ではなぜ「@attributes」なのか?「attributes」ではダメなのか? → <attributes> という要素との衝突を避けるためです.<@attributes> は要素名として無効なので衝突しないことが保証されます.
YorihiroKatsuki

2016/04/04 04:31

詳しいご説明ありがとうございます! なるほど、それで@がついていたんですね。 ArrayAccesも見て勉強しようと思います。 ありがとうございました!
guest

0

XMLの属性(attribute)です。属性は複数持つこともできるので、そのような結果が返るのではないでしょうか。

XML

1<ZIP_result> 2 <result name="ZipSearchXML"/> 3 <result version="1.01"/> 4 <result request_url="http%3A%2F%2Fzip.cgis.biz%2Fxml%2Fzip.php%3Fzn%3D1130033"/> 5 <result request_zip_num="1130033"/> 6 <result request_zip_version="none"/> 7 <result result_code="1"/> 8 <result result_zip_num="1130033"/> 9 <result result_zip_version="0"/> 10 <result result_values_count="1"/> 11 <ADDRESS_value> 12 <value state_kana="トウキョウト"/> 13 <value city_kana="ブンキョウク"/> 14 <value address_kana="ホンゴウ"/> 15 <value company_kana="none"/> 16 <value state="東京都"/> 17 <value city="文京区"/> 18 <value address="本郷"/> 19 <value company="none"/> 20 </ADDRESS_value> 21</ZIP_result>

下記ページの「要素や属性の参照」をご覧になれば、雰囲気はつかめると思います。

【SimpleXML | PHP プログラミング解説】
http://so-zou.jp/web-app/tech/programming/php/xml/simple-xml.htm#refer-to-element

投稿2016/04/03 14:21

編集2016/04/03 14:26
kei344

総合スコア69398

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

YorihiroKatsuki

2016/04/04 04:29

ありがとうございます!! 頂いたURLも見て勉強します!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問