发个 和 xml 解析相关的问题
$a = new SimpleXMLElement('
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>
- 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>
- 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>
- 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 7object(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,可以翻译成接口,也可以翻译成界面), 给一个类提供了数组方式操作的界面. <div class="clear"> </div>

使用Java的String.valueOf()函数将基本数据类型转换为字符串在Java开发中,当我们需要将基本数据类型转换为字符串时,一种常见的方法是使用String类的valueOf()函数。这个函数可以接受基本数据类型的参数,并返回对应的字符串表示。在本文中,我们将探讨如何使用String.valueOf()函数进行基本数据类型转换,并提供一些代码示例来

char数组转string的方法:可以通过赋值来实现,使用{char a[]=" abc d\0efg ";string s=a;}语法,让char数组对string直接赋值,执行代码即可完成转换。

使用Java的String.replace()函数替换字符串中的字符(串)在Java中,字符串是不可变的对象,这意味着一旦创建了一个字符串对象,就无法修改它的值。但是,你可能会遇到需要替换字符串中的某些字符或者字符串的情况。这时候,我们可以使用Java的String类中的replace()方法来实现字符串的替换。String类的replace()方法有两种重

大家好,今天给大家分享java基础知识之String。String类的重要性就不必说了,可以说是我们后端开发用的最多的类,所以,很有必要好好来聊聊它。

使用Java的String.length()函数获取字符串的长度在Java编程中,字符串是一种非常常见的数据类型,我们经常需要获取字符串的长度,即字符串中字符的个数。在Java中,我们可以使用String类的length()函数来获取字符串的长度。下面是一个简单的示例代码:publicclassStringLengthExample{publ

一、认识String1.JDK中的String首先我们看看JDK中的String类源码,它实现了很多接口,可以看到String类被final修饰了,这就说明String类不可以被继承,String不存在子类,这样所有使用JDK的人,用到的String类都是同一个,如果String允许被继承,每个人都可以对String进行扩展,每个人使用的String都不是同一个版本,两个不同的人使用相同的方法,表现出不同的结果,这就导致代码没办法进行开发了继承和方法覆写在带来灵活性的同时,也会带来很多子类行为不

String中split方法使用String的split()方法用于按传入的字符或字符串对String进行拆分,返回拆分之后的数组。1、一般用法用一般的字符,例如@或,等符号做分隔符时:Stringaddress="上海@上海市@闵行区@吴中路";String[]splitAddr=address.split("@");System.out.println(splitAddr[0]+splitAddr[1]+splitAddr[2]+splitAddr[3

在Golang编程中,byte、rune和string类型是非常基础、常见的数据类型。它们在处理字符串、文件流等数据操作时发挥着重要作用。而在进行这些数据操作时,我们通常需要对它们进行相互的转换,这就需要掌握一些转换技巧。本文将介绍Golang函数的byte、rune和string类型转换技巧,旨在帮助读者更好地理解这些数据类型,并能够熟练地在编程实践中应用


핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

MinGW - Windows용 미니멀리스트 GNU
이 프로젝트는 osdn.net/projects/mingw로 마이그레이션되는 중입니다. 계속해서 그곳에서 우리를 팔로우할 수 있습니다. MinGW: GCC(GNU Compiler Collection)의 기본 Windows 포트로, 기본 Windows 애플리케이션을 구축하기 위한 무료 배포 가능 가져오기 라이브러리 및 헤더 파일로 C99 기능을 지원하는 MSVC 런타임에 대한 확장이 포함되어 있습니다. 모든 MinGW 소프트웨어는 64비트 Windows 플랫폼에서 실행될 수 있습니다.

Atom Editor Mac 버전 다운로드
가장 인기 있는 오픈 소스 편집기

드림위버 CS6
시각적 웹 개발 도구

VSCode Windows 64비트 다운로드
Microsoft에서 출시한 강력한 무료 IDE 편집기
