ホームページ バックエンド開発 PHPチュートリアル XML 解析に関する質問を投稿する

XML 解析に関する質問を投稿する

Jun 13, 2016 pm 01:24 PM
object offset quot string

XML 解析に関連する質問を投稿します
$a = new SimpleXMLElement('1');
if(isset ($a[0 ] ))
{
var_dump($a);
var_dump($a[0]);
var_dump($a[1]);
}
die() ;

テストせずに、印刷されると思われる内容を判断するだけで問題ありません。 次に、

が出力されることをテストします。その理由を誰が説明できますか?

-----解決策---------
予想通り...

PHP コード

オブジェクト(SimpleXMLElement)#1 (1) {
  ["b"]=>
  文字列(1) "1"
}
オブジェクト(SimpleXMLElement)#2 (1) {
  ["b"]=>
  文字列(1) "1"
}
オブジェクト(SimpleXMLElement)#2 (1) {
  ["b"]=>
  文字列(1) "1"
}
<br><font color="#e78608">------解決策------------------</font><br>
場所によってテストは異なりますか? <br>
ログイン後にコピー
PHP コード

オブジェクト(SimpleXMLElement)#1 (1) {
  ["b"]=>
  文字列(1) "1"
}
オブジェクト(SimpleXMLElement)#2 (1) {
  ["b"]=>
  文字列(1) "1"
}
NULL
<br><font color="#e78608">------解決策------------------</font><br>
オブジェクト(SimpleXMLElement)#1 (1) { ["b"]=> 文字列(1) "1" } オブジェクト(SimpleXMLElement)#2 (1) { ["b"]=> 文字列(1) "1" " } <br>警告: main() [function.main]: D:APMServ5.2.6wwwhtdocslocalhostsimple_xml.php の 7 行目にそのような要素が 0 個しか存在しない場合、要素 xml 番号 1 を追加できません<br>object(SimpleXMLElement)#2 ( 1) { ["b"]=> 文字列(1) "1" } <br>---------------------------- --- -<br>var_dump($a); この型がオブジェクトの場合は問題ありません! <br><br>a[0] または a[1] が配列呼び出しである場合は、エラーが報告されます。説明しました;<br> <br><br>
<br><font color="#e78608">------解決策------------------</font><br>
何が問題ですか?
<br><font color="#e78608">------解決策------------------</font><br>
<br><font color="#e78608">------解決策------------------</font><br>
さて、答えは比較的単純で、多くの説明は必要ありません: この拡張機能は次のように書かれています... $a[0] が $a 自体を返すようにします...<br><br>うーん、でもどうなのでしょうかこの拡張機能は C ソースコードも見たことがありません...興味があれば見てみてください...<br><br>ただし、これは PHP レベルでも実現できます。<br><br>もちろん例を示します。鍵はこの「ArrayAccess の実装」にあります<br>http://www.php.net/manual/en/class.arrayaccess.php<br><br><br>
ログイン後にコピー
PHP コード

 <?php
 
 クラス X は ArrayAccess {を実装します
     パブリック $a=1;
     
     パブリック関数 offsetExists ( $offset ){
         if($offset==0) true を返します。
     }
     パブリック関数 offsetGet ( $offset ){
         if($offset==0)$this を返す;
     }
     
     パブリック関数 offsetSet ( $offset , $value ){
         if($offset==0) $this->a=$value;
     }
     パブリック関数 offsetUnset ( $offset ){
         if($offset==0) unset($this->a);
     }
     
 }

 $m=新しいX();
 
 print_R($m);
 print_R($m[0]);
<br /><font color='#e78608'>------解決策------------------</font><br />
<dl class='code'>PHP コード<pre class="brush:php;toolbar:false">
オブジェクト(SimpleXMLElement)#1 (1) { ["b"]=> 文字列(1) "1" } オブジェクト(SimpleXMLElement)#2 (1) { ["b"]=> 文字列(1) "1" " }
警告: main() [function.main]: 7 行目の PHPDocument1 にそのような要素が 0 個しか存在しない場合、要素 xml 番号 1 を追加できません
object(SimpleXMLElement)#2 (1) { ["b"]=> string(1) "1" }
<br><font color="#e78608">------解決策------------------</font><br>
実際、$a を含む $a->xx、$a[0] はすべて、データ構造を操作するためのインターフェイスです。<br>インターフェイスからどのような結果が得られるかは、完全に依存します。コードの書き方<br>同様に、データ構造が提供するインターフェイスもコードの書き方に依存します<br>(もちろん、これには論理関数と言語関数の両方でいくつかの制限があります)<br><br>たとえば、 __toString メソッドを実装している限り、どのクラスでも $obj を直接エコーできます。<br> ただし、これは $obj が文字列であることを意味するのではなく、文字列インターフェイスでデータを操作するメソッドを提供することを意味します。 .<br><br>それでは、質問に戻ります。<br>この SimpleXMLElement はリソース (PHP のいわゆるリソースは、C/C++ ソース プログラム内の構造体またはクラスなどです)、<br>拡張ソースプログラムではどのようなインターフェイスを制御できますか? <br> クラス操作インターフェイス「->」、配列操作インターフェイス「[0]」、文字出力インターフェイス「echo」を提供できます。など、同時に <br> を提供することもできます。したがって、配列操作インターフェイスを提供する場合、$x[0] が <br><br> ここで示す例は、PHP レベルで、ArrayAccess インターフェイス (インターフェイス、またはインターフェイスに変換できるインターフェイス) を通じて、配列操作用のインターフェイスがクラスに提供されることです。
ログイン後にコピー
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

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

SublimeText3 中国語版

SublimeText3 中国語版

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

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

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

Java の String.valueOf() 関数を使用して基本データ型を文字列に変換する Java の String.valueOf() 関数を使用して基本データ型を文字列に変換する Jul 24, 2023 pm 07:55 PM

Java の String.valueOf() 関数を使用して基本データ型を文字列に変換する Java 開発で基本データ型を文字列に変換する必要がある場合、一般的な方法は String クラスの valueOf() 関数を使用することです。この関数は、基本データ型のパラメータを受け入れ、対応する文字列表現を返すことができます。この記事では、基本的なデータ型変換に String.valueOf() 関数を使用する方法を検討し、いくつかのコード例を提供します。

char配列を文字列に変換する方法 char配列を文字列に変換する方法 Jun 09, 2023 am 10:04 AM

char配列をstringに変換する方法:代入によって実現できます {char a[]=" abc d\0efg ";string s=a;} 構文を使用して、char配列にstringに値を直接代入させて実行します変換を完了するためのコード。

Java の String.replace() 関数を使用して、文字列内の文字 (文字列) を置換します。 Java の String.replace() 関数を使用して、文字列内の文字 (文字列) を置換します。 Jul 25, 2023 pm 05:16 PM

Java の String.replace() 関数を使用して文字列内の文字 (文字列) を置換する Java では、文字列は不変オブジェクトです。つまり、文字列オブジェクトが作成されると、その値は変更できません。ただし、文字列内の特定の文字または文字列を置換する必要がある状況が発生する場合があります。現時点では、Java の String クラスの replace() メソッドを使用して文字列置換を実装できます。 String クラスの replace() メソッドには 2 つのタイプがあります。

2wワード詳細説明文字列、yyds 2wワード詳細説明文字列、yyds Aug 24, 2023 pm 03:56 PM

皆さんこんにちは。今日は Java の基本知識である String についてお話します。 String クラスの重要性は言うまでもなく、バックエンド開発で最もよく使用されるクラスであるため、説明する必要があります。

Golang関数のバイト、ルーン、文字列型変換スキル Golang関数のバイト、ルーン、文字列型変換スキル May 17, 2023 am 08:21 AM

Golang プログラミングでは、バイト、ルーン、文字列型は非常に基本的で一般的なデータ型です。これらは、文字列やファイル ストリームなどのデータ操作の処理において重要な役割を果たします。これらのデータ操作を実行するときは、通常、データを相互に変換する必要があるため、変換スキルを習得する必要があります。この記事では、読者がこれらのデータ型をより深く理解し、プログラミングの実践に上手に適用できるようにすることを目的として、Golang 関数のバイト、ルーン、および文字列の型変換テクニックを紹介します。

JavaのString.length()関数を使用して文字列の長さを取得します。 JavaのString.length()関数を使用して文字列の長さを取得します。 Jul 25, 2023 am 09:09 AM

文字列の長さを取得するには、Java の String.length() 関数を使用します。Java プログラミングでは、文字列は非常に一般的なデータ型です。多くの場合、文字列の長さ、つまり文字列内の文字数を取得する必要があります。 Java では、String クラスの length() 関数を使用して文字列の長さを取得できます。簡単なコード例を次に示します。 publicclassStringLengthExample{publ

JavaのStringクラスの使い方 JavaのStringクラスの使い方 Apr 19, 2023 pm 01:19 PM

1. JDK の String1. String を理解する まず、JDK の String クラスのソース コードを見てみましょう. これには多くのインターフェイスが実装されています. String クラスは Final によって変更されていることがわかります. これは、String クラスができないことを意味しますString. クラスのサブクラスは継承されず、String. クラスのサブクラスは存在しないため、JDK を使用するすべての人が同じ String クラスを使用します。String の継承が許可されている場合、誰もが String を拡張できます。全員が異なるバージョンの String を使用し、2 人の異なる人が String. クラスを使用します。同じメソッドでも異なる結果が表示されるため、コードの開発が不可能になります。継承とメソッドのオーバーライドは柔軟性をもたらすだけでなく、多くのサブクラスの動作が異なる原因になります。

Java String での Split メソッドの使用方法 Java String での Split メソッドの使用方法 May 02, 2023 am 09:37 AM

String の Split メソッドは、String の Split() メソッドを使用して、受信する文字または文字列に従って String を分割し、分割された配列を返します。 1. 一般的な使用法 @ や区切り文字などの一般的な文字を使用する場合: Stringaddress="Shanghai@Shanghai City@Minhang District@Wuzhong Road";String[]splitAddr=address.split("@");System .out。 println(splitAddr[0]+splitAddr[1]+splitAddr[2]+splitAddr[3]

See all articles