Heim Backend-Entwicklung PHP-Tutorial 发个 和 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 code

object(SimpleXMLElement)#1 (1) {
  ["b"]=>
  string(1) "1"
}
object(SimpleXMLElement)#2 (1) {
  ["b"]=>
  string(1) "1"
}
object(SimpleXMLElement)#2 (1) {
  ["b"]=>
  string(1) "1"
}
<br><font color="#e78608">------解决方案--------------------</font><br>
难道各地的测试不一样!<br>
Nach dem Login kopieren
PHP code

object(SimpleXMLElement)#1 (1) {
  ["b"]=>
  string(1) "1"
}
object(SimpleXMLElement)#2 (1) {
  ["b"]=>
  string(1) "1"
}
NULL
<br><font color="#e78608">------解决方案--------------------</font><br>
object(SimpleXMLElement)#1 (1) { ["b"]=> string(1) "1" } object(SimpleXMLElement)#2 (1) { ["b"]=> string(1) "1" } <br>Warning: main() [function.main]: Cannot add element xml number 1 when only 0 such elements exist in D:\APMServ5.2.6\www\htdocs\localhost\simple_xml.php on line 7<br>object(SimpleXMLElement)#2 (1) { ["b"]=> string(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>给你个例子,当然关键就在这个 "implements ArrayAccess"<br>http://www.php.net/manual/en/class.arrayaccess.php<br><br><br>
Nach dem Login kopieren
PHP code

 <?php class X implements ArrayAccess  {
     public $a=1;
     
     public function offsetExists ( $offset ){
         if($offset==0)return true;
     }
     public function offsetGet ( $offset ){
         if($offset==0)return $this;
     }
     
     public function offsetSet ( $offset , $value ){
         if($offset==0) $this->a=$value;
     }
     public function  offsetUnset (  $offset ){
         if($offset==0) unset($this->a);
     }
     
 }

 $m=new X();
 
 print_R($m);
 print_R($m[0]);
<br><font color="#e78608">------解决方案--------------------</font><br>
Nach dem Login kopieren
PHP code
object(SimpleXMLElement)#1 (1) { ["b"]=> string(1) "1" } object(SimpleXMLElement)#2 (1) { ["b"]=> string(1) "1" } 
Warning: main() [function.main]: Cannot add element xml number 1 when only 0 such elements exist in PHPDocument1 on line 7
object(SimpleXMLElement)#2 (1) { ["b"]=> string(1) "1" }
<br><font color="#e78608">------解决方案--------------------</font><br>
ok, 其实$a->xx, $a[0], 包括 $a 这些,都是我们操作一个数据结构的界面....<br>一个界面能得到什么结果,完全取决于我们如何写code<br>同样,一个数据结构提供了什么界面,也取决于我们如何写code  <br>(当然,这有一些限制,有逻辑上的,有语言功能上的)<br><br>比如,任何一个类,只要我们实现了__toString方法,就能直接 echo $obj;  <br>但是这不代表,这个$obj是一个字符串,只是代表我们提供了一个以字符串方式操作该数据的界面.<br><br>所以,回到你的问题,<br>这个SimpleXMLElement是一个资源(php的所谓资源,就是其c/c++源程序中的结构或类等),<br>那么提供什么样的界面,就是该扩展源程序里能控制的,<br>它可以提供类操作的界面"->", 也能提供数组操作界面"[0]",也能提供字符输出界面"echo"等,<br>也可以同时提供.那么,自然的,在提供数组操作界面时,让$x[0]返回$x本身也就不是太不能理解的事了.<br><br><br>我给你看的例子,就是在php层面,通过ArrayAccess这个接口(interface,可以翻译成接口,也可以翻译成界面), 给一个类提供了数组方式操作的界面. 
                 
              
              
        
            
Nach dem Login kopieren
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

Video Face Swap

Video Face Swap

Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Konvertieren Sie grundlegende Datentypen mit der Java-Funktion String.valueOf() in Strings Konvertieren Sie grundlegende Datentypen mit der Java-Funktion String.valueOf() in Strings Jul 24, 2023 pm 07:55 PM

Konvertieren Sie grundlegende Datentypen mit der Java-Funktion String.valueOf() in Strings. Wenn wir in der Java-Entwicklung grundlegende Datentypen in Strings konvertieren müssen, ist eine gängige Methode die Verwendung der Funktion valueOf() der String-Klasse. Diese Funktion kann Parameter grundlegender Datentypen akzeptieren und die entsprechende Zeichenfolgendarstellung zurückgeben. In diesem Artikel untersuchen wir, wie die Funktion String.valueOf() für grundlegende Datentypkonvertierungen verwendet wird, und stellen einige Codebeispiele dafür bereit

So konvertieren Sie ein Char-Array in einen String So konvertieren Sie ein Char-Array in einen String Jun 09, 2023 am 10:04 AM

Methode zum Konvertieren eines char-Arrays in einen String: Dies kann durch Zuweisung erreicht werden. Verwenden Sie die Syntax {char a[]=" abc d\0efg ";string s=a;}, damit das char-Array dem String direkt einen Wert zuweisen und ausführen kann Der Code zum Abschließen der Konvertierung.

Verwenden Sie die String.replace()-Funktion von Java, um Zeichen (Strings) in einem String zu ersetzen Verwenden Sie die String.replace()-Funktion von Java, um Zeichen (Strings) in einem String zu ersetzen Jul 25, 2023 pm 05:16 PM

Ersetzen Sie Zeichen (Strings) in einem String mit der Java-Funktion String.replace(). In Java sind Strings unveränderliche Objekte, was bedeutet, dass der Wert eines String-Objekts nach der Erstellung nicht mehr geändert werden kann. Es kann jedoch vorkommen, dass Sie bestimmte Zeichen oder Zeichenfolgen in einer Zeichenfolge ersetzen müssen. Zu diesem Zeitpunkt können wir die Methode replace () in der String-Klasse von Java verwenden, um das Ersetzen von Zeichenfolgen zu implementieren. Die Methode replace() der Klasse String hat zwei Typen:

2w Wörter detaillierte Erklärung String, yyds 2w Wörter detaillierte Erklärung String, yyds Aug 24, 2023 pm 03:56 PM

Hallo zusammen, heute werde ich die Grundkenntnisse von Java: String mit Ihnen teilen. Unnötig zu erwähnen, wie wichtig die String-Klasse ist. Man kann sagen, dass sie die am häufigsten verwendete Klasse in unserer Back-End-Entwicklung ist, daher ist es notwendig, darüber zu sprechen.

Fähigkeiten zur Byte-, Runen- und String-Konvertierung von Golang-Funktionen Fähigkeiten zur Byte-, Runen- und String-Konvertierung von Golang-Funktionen May 17, 2023 am 08:21 AM

In der Golang-Programmierung sind Byte-, Runen- und String-Typen sehr grundlegende und gängige Datentypen. Sie spielen eine wichtige Rolle bei der Verarbeitung von Datenoperationen wie Zeichenfolgen und Dateiströmen. Wenn wir diese Datenoperationen durchführen, müssen wir sie normalerweise ineinander konvertieren, was die Beherrschung einiger Konvertierungsfähigkeiten erfordert. In diesem Artikel werden die Konvertierungstechniken für Byte-, Runen- und String-Typen von Golang-Funktionen vorgestellt. Ziel ist es, den Lesern zu helfen, diese Datentypen besser zu verstehen und sie geschickt in der Programmierpraxis anwenden zu können.

Verwenden Sie die String.length()-Funktion von Java, um die Länge einer Zeichenfolge zu ermitteln Verwenden Sie die String.length()-Funktion von Java, um die Länge einer Zeichenfolge zu ermitteln Jul 25, 2023 am 09:09 AM

Verwenden Sie die String.length()-Funktion von Java, um die Länge einer Zeichenfolge zu ermitteln. In der Java-Programmierung ist die Zeichenfolge ein sehr häufiger Datentyp. Wir müssen häufig die Länge einer Zeichenfolge ermitteln, dh die Anzahl der Zeichen in der Zeichenfolge. In Java können wir die Funktion length() der String-Klasse verwenden, um die Länge eines Strings zu ermitteln. Hier ist ein einfacher Beispielcode: publicclassStringLengthExample{publ

So verwenden Sie die String-Klasse von Java So verwenden Sie die String-Klasse von Java Apr 19, 2023 pm 01:19 PM

1. String1 verstehen. Schauen wir uns zunächst den Quellcode der String-Klasse im JDK an. Sie können sehen, dass die String-Klasse nicht geändert werden kann Es gibt keine Unterklasse der String-Klasse, sodass alle Personen, die das JDK verwenden, dieselbe String-Klasse verwenden können Die Verwendung derselben Methode durch zwei verschiedene Personen führt zu unterschiedlichen Ergebnissen, was die Entwicklung des Codes unmöglich macht. Vererbung und Methodenüberschreibung bringen nicht nur Flexibilität, sondern führen auch dazu, dass sich viele Unterklassen unterschiedlich verhalten.

So verwenden Sie die Split-Methode in Java String So verwenden Sie die Split-Methode in Java String May 02, 2023 am 09:37 AM

Die Split-Methode in String verwendet die Split()-Methode von String, um den String entsprechend den eingehenden Zeichen oder Strings aufzuteilen und das geteilte Array zurückzugeben. 1. Allgemeine Verwendung Bei Verwendung allgemeiner Zeichen wie @ oder als Trennzeichen: 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