class dd { const d = 'd'; public function test() { $arr = array(); $arr['d'] = 'test'; $arr2 = array( 'a' => '1', 'b' => '2', 'c' => '3', 'd' => '4' ); foreach ($arr2 as $key=>$value) { if (in_array($key,array('a','b','c')) || isset($arr['self::d'])) { echo $key; } } } } $dd = new dd(); $dd->test();
输出:
<code>abc </code>
为什么不是输出abcd
========补充一下======== 其实我真正想问的是,单引号不是不解析么?为什么echo $arr['self::d']。提示的是未定义'self::d'这个常量?提示是为定义'self::d'可不是'd'哦。
=======我是分割线========
回复内容:
class dd { const d = 'd'; public function test() { $arr = array(); $arr['d'] = 'test'; $arr2 = array( 'a' => '1', 'b' => '2', 'c' => '3', 'd' => '4' ); foreach ($arr2 as $key=>$value) { if (in_array($key,array('a','b','c')) || isset($arr['self::d'])) { echo $key; } } } } $dd = new dd(); $dd->test();
输出:
<code>abc </code>
为什么不是输出abcd
========补充一下======== 其实我真正想问的是,单引号不是不解析么?为什么echo $arr['self::d']。提示的是未定义'self::d'这个常量?提示是为定义'self::d'可不是'd'哦。
=======我是分割线========
虽然已经有了不少回答了我还是说一下我的看法 ...
关于为什么不是输出 abcd
楼上说了很多我就不赘述了 ... 我单单说一下你遇到的这个错误 ...
事实上 ... 这是一个 非常诡异 的错误 ... 在我的知识范围内这是不可能出现的 ...
首先 ... 一个类常量在任何情况下都不会被自动转化为字符串 ...
其次 ... 调用不存在的类常量只会引发 Warning
或者 Fatal
... 任何情况下都不会只是一个 Notice
...
最直白的证明 ... 我写了一段测试代码 ... 在兼容箱里跑了一下 ... 代码和运行报告如下 ...
<code><?php class foo { function bar() { $baz = array(); echo $baz['self::xx']; // line 5 echo $baz[self::xx]; // line 6 } } $foo = new foo; $foo->bar(); ------------------------------------------------------------------------ php version 5.5.0beta4 Notice: Undefined index: self::xx in cevin on line 5 Fatal error: Undefined class constant 'xx' in cevin on line 6 php version 5.5.0beta3 Notice: Undefined index: self::xx in cevin on line 5 Fatal error: Undefined class constant 'xx' in cevin on line 6 php version 5.5.0beta2 Notice: Undefined index: self::xx in cevin on line 5 Fatal error: Undefined class constant 'xx' in cevin on line 6 php version 5.5.0beta1 Notice: Undefined index: self::xx in cevin on line 5 Fatal error: Undefined class constant 'xx' in cevin on line 6 php version 5.5.0alpha6 Notice: Undefined index: self::xx in cevin on line 5 Fatal error: Undefined class constant 'xx' in cevin on line 6 php version 5.5.0alpha5 Notice: Undefined index: self::xx in cevin on line 5 Fatal error: Undefined class constant 'xx' in cevin on line 6 php version 5.5.0alpha4 Notice: Undefined index: self::xx in cevin on line 5 Fatal error: Undefined class constant 'xx' in cevin on line 6 php version 5.5.0alpha3 Notice: Undefined index: self::xx in cevin on line 5 Fatal error: Undefined class constant 'xx' in cevin on line 6 php version 5.5.0alpha2 Notice: Undefined index: self::xx in cevin on line 5 Fatal error: Undefined class constant 'xx' in cevin on line 6 php version 5.5.0alpha1 Notice: Undefined index: self::xx in cevin on line 5 Fatal error: Undefined class constant 'xx' in cevin on line 6 php version 5.4.14 Notice: Undefined index: self::xx in cevin on line 5 Fatal error: Undefined class constant 'xx' in cevin on line 6 php version 5.4.12 Notice: Undefined index: self::xx in cevin on line 5 Fatal error: Undefined class constant 'xx' in cevin on line 6 php version 5.4.11 Notice: Undefined index: self::xx in cevin on line 5 Fatal error: Undefined class constant 'xx' in cevin on line 6 php version 5.4.10 Notice: Undefined index: self::xx in cevin on line 5 Fatal error: Undefined class constant 'xx' in cevin on line 6 php version 5.4.9 Notice: Undefined index: self::xx in cevin on line 5 Fatal error: Undefined class constant 'xx' in cevin on line 6 php version 5.4.8 Notice: Undefined index: self::xx in cevin on line 5 Fatal error: Undefined class constant 'xx' in cevin on line 6 php version 5.4.7 Notice: Undefined index: self::xx in cevin on line 5 Fatal error: Undefined class constant 'xx' in cevin on line 6 php version 5.4.6 Notice: Undefined index: self::xx in cevin on line 5 Fatal error: Undefined class constant 'xx' in cevin on line 6 php version 5.4.5 Notice: Undefined index: self::xx in cevin on line 5 Fatal error: Undefined class constant 'xx' in cevin on line 6 php version 5.4.4 Notice: Undefined index: self::xx in cevin on line 5 Fatal error: Undefined class constant 'xx' in cevin on line 6 php version 5.4.3 Notice: Undefined index: self::xx in cevin on line 5 Fatal error: Undefined class constant 'xx' in cevin on line 6 php version 5.4.2 Notice: Undefined index: self::xx in cevin on line 5 Fatal error: Undefined class constant 'xx' in cevin on line 6 php version 5.4.1 Notice: Undefined index: self::xx in cevin on line 5 Fatal error: Undefined class constant 'xx' in cevin on line 6 php version 5.4.0 Notice: Undefined index: self::xx in cevin on line 5 Fatal error: Undefined class constant 'xx' in cevin on line 6 php version 5.3.24 Notice: Undefined index: self::xx in cevin on line 5 Fatal error: Undefined class constant 'xx' in cevin on line 6 php version 5.3.22 Notice: Undefined index: self::xx in cevin on line 5 Fatal error: Undefined class constant 'xx' in cevin on line 6 php version 5.3.21 Notice: Undefined index: self::xx in cevin on line 5 Fatal error: Undefined class constant 'xx' in cevin on line 6 php version 5.3.20 Notice: Undefined index: self::xx in cevin on line 5 Fatal error: Undefined class constant 'xx' in cevin on line 6 php version 5.3.19 Notice: Undefined index: self::xx in cevin on line 5 Fatal error: Undefined class constant 'xx' in cevin on line 6 php version 5.3.18 Notice: Undefined index: self::xx in cevin on line 5 Fatal error: Undefined class constant 'xx' in cevin on line 6 php version 5.3.17 Notice: Undefined index: self::xx in cevin on line 5 Fatal error: Undefined class constant 'xx' in cevin on line 6 php version 5.3.16 Notice: Undefined index: self::xx in cevin on line 5 Fatal error: Undefined class constant 'xx' in cevin on line 6 php version 5.3.15 Notice: Undefined index: self::xx in cevin on line 5 Fatal error: Undefined class constant 'xx' in cevin on line 6 php version 5.3.14 Notice: Undefined index: self::xx in cevin on line 5 Fatal error: Undefined class constant 'xx' in cevin on line 6 php version 5.3.13 Notice: Undefined index: self::xx in cevin on line 5 Fatal error: Undefined class constant 'xx' in cevin on line 6 php version 5.3.12 Notice: Undefined index: self::xx in cevin on line 5 Fatal error: Undefined class constant 'xx' in cevin on line 6 php version 5.3.11 Notice: Undefined index: self::xx in cevin on line 5 Fatal error: Undefined class constant 'xx' in cevin on line 6 php version 5.3.10 Notice: Undefined index: self::xx in cevin on line 5 Fatal error: Undefined class constant 'xx' in cevin on line 6 php version 5.3.9 Notice: Undefined index: self::xx in cevin on line 5 Fatal error: Undefined class constant 'xx' in cevin on line 6 php version 5.3.8 Notice: Undefined index: self::xx in cevin on line 5 Fatal error: Undefined class constant 'xx' in cevin on line 6 php version 5.3.7 Notice: Undefined index: self::xx in cevin on line 5 Fatal error: Undefined class constant 'xx' in cevin on line 6 php version 5.3.6 Notice: Undefined index: self::xx in cevin on line 5 Fatal error: Undefined class constant 'xx' in cevin on line 6 php version 5.3.5 Notice: Undefined index: self::xx in cevin on line 5 Fatal error: Undefined class constant 'xx' in cevin on line 6 php version 5.3.4 Notice: Undefined index: self::xx in cevin on line 5 Fatal error: Undefined class constant 'xx' in cevin on line 6 php version 5.3.3 Notice: Undefined index: self::xx in cevin on line 5 Fatal error: Undefined class constant 'xx' in cevin on line 6 php version 5.3.2 Notice: Undefined index: self::xx in cevin on line 5 Fatal error: Undefined class constant 'xx' in cevin on line 6 php version 5.3.1 Notice: Undefined index: self::xx in cevin on line 5 Fatal error: Undefined class constant 'xx' in cevin on line 6 php version 5.3.0 Notice: Undefined index: self::xx in cevin on line 5 Fatal error: Undefined class constant 'xx' in cevin on line 6 php version 5.2.17 Notice: Undefined index: self::xx in cevin on line 5 Fatal error: Undefined class constant 'xx' in cevin on line 6 php version 5.2.16 Notice: Undefined index: self::xx in cevin on line 5 Fatal error: Undefined class constant 'xx' in cevin on line 6 php version 5.2.15 Notice: Undefined index: self::xx in cevin on line 5 Fatal error: Undefined class constant 'xx' in cevin on line 6 php version 5.2.14 Notice: Undefined index: self::xx in cevin on line 5 Fatal error: Undefined class constant 'xx' in cevin on line 6 php version 5.2.13 Notice: Undefined index: self::xx in cevin on line 5 Fatal error: Undefined class constant 'xx' in cevin on line 6 php version 5.2.12 Notice: Undefined index: self::xx in cevin on line 5 Fatal error: Undefined class constant 'xx' in cevin on line 6 php version 5.2.11 Notice: Undefined index: self::xx in cevin on line 5 Fatal error: Undefined class constant 'xx' in cevin on line 6 php version 5.2.10 Notice: Undefined index: self::xx in cevin on line 5 Fatal error: Undefined class constant 'xx' in cevin on line 6 php version 5.2.9 Notice: Undefined index: self::xx in cevin on line 5 Fatal error: Undefined class constant 'xx' in cevin on line 6 php version 5.2.8 Notice: Undefined index: self::xx in cevin on line 5 Fatal error: Undefined class constant 'xx' in cevin on line 6 php version 5.2.7 Notice: Undefined index: self::xx in cevin on line 5 Fatal error: Undefined class constant 'xx' in cevin on line 6 php version 5.2.6 Notice: Undefined index: self::xx in cevin on line 5 Fatal error: Undefined class constant 'xx' in cevin on line 6 php version 5.2.5 Notice: Undefined index: self::xx in cevin on line 5 Fatal error: Undefined class constant 'xx' in cevin on line 6 php version 5.2.4 Notice: Undefined index: self::xx in cevin on line 5 Fatal error: Undefined class constant 'xx' in cevin on line 6 php version 5.2.3 Notice: Undefined index: self::xx in cevin on line 5 Fatal error: Undefined class constant 'xx' in cevin on line 6 php version 5.2.2 Notice: Undefined index: self::xx in cevin on line 5 Fatal error: Undefined class constant 'xx' in cevin on line 6 php version 5.2.1 Notice: Undefined index: self::xx in cevin on line 5 Fatal error: Undefined class constant 'xx' in cevin on line 6 php version 5.2.0 Notice: Undefined index: self::xx in cevin on line 5 Fatal error: Undefined class constant 'xx' in cevin on line 6 php version 5.1.6 Notice: Undefined index: self::xx in cevin on line 5 Fatal error: Undefined class constant 'xx' in cevin on line 6 php version 5.1.5 Notice: Undefined index: self::xx in cevin on line 5 Fatal error: Undefined class constant 'xx' in cevin on line 6 php version 5.1.4 Notice: Undefined index: self::xx in cevin on line 5 Fatal error: Undefined class constant 'xx' in cevin on line 6 php version 5.1.3 Notice: Undefined index: self::xx in cevin on line 5 Fatal error: Undefined class constant 'xx' in cevin on line 6 php version 5.1.2 Notice: Undefined index: self::xx in cevin on line 5 Fatal error: Undefined class constant 'xx' in cevin on line 6 php version 5.1.1 Notice: Undefined index: self::xx in cevin on line 5 Fatal error: Undefined class constant 'xx' in cevin on line 6 php version 5.1.0 Notice: Undefined index: self::xx in cevin on line 5 Fatal error: Undefined class constant 'xx' in cevin on line 6 php version 5.0.5 Notice: Undefined index: self::xx in cevin on line 5 Fatal error: Undefined class constant 'xx' in cevin on line 6 php version 5.0.4 Notice: Undefined index: self::xx in cevin on line 5 Fatal error: Undefined class constant 'xx' in cevin on line 6 php version 5.0.3 Notice: Undefined index: self::xx in cevin on line 5 Fatal error: Undefined class constant 'xx' in cevin on line 6 php version 5.0.2 Notice: Undefined index: self::xx in cevin on line 5 Fatal error: Undefined class constant 'xx' in cevin on line 6 php version 5.0.1 Notice: Undefined index: self::xx in cevin on line 5 Fatal error: Undefined class constant 'xx' in cevin on line 6 php version 5.0.0 Notice: Undefined index: self::xx in cevin on line 5 Fatal error: Undefined class constant 'xx' in cevin on line 6 php version 4.4.9 Parse error: syntax error, unexpected ']', expecting '(' in cevin on line 6 php version 4.4.8 Parse error: syntax error, unexpected ']', expecting '(' in cevin on line 6 php version 4.4.7 Parse error: syntax error, unexpected ']', expecting '(' in cevin on line 6 php version 4.4.6 Parse error: syntax error, unexpected ']', expecting '(' in cevin on line 6 php version 4.4.5 Parse error: syntax error, unexpected ']', expecting '(' in cevin on line 6 php version 4.4.4 Parse error: syntax error, unexpected ']', expecting '(' in cevin on line 6 php version 4.4.3 Parse error: syntax error, unexpected ']', expecting '(' in cevin on line 6 php version 4.4.2 Parse error: syntax error, unexpected ']', expecting '(' in cevin on line 6 php version 4.4.1 Parse error: parse error, unexpected ']', expecting '(' in cevin on line 6 php version 4.4.0 Parse error: parse error, unexpected ']', expecting '(' in cevin on line 6 php version 4.3.11 Parse error: parse error, unexpected ']', expecting '(' in cevin on line 6 php version 4.3.10 Parse error: parse error, unexpected ']', expecting '(' in cevin on line 6 php version 4.3.9 Parse error: parse error, unexpected ']', expecting '(' in cevin on line 6 php version 4.3.8 Parse error: parse error, unexpected ']', expecting '(' in cevin on line 6 php version 4.3.7 Parse error: parse error, unexpected ']', expecting '(' in cevin on line 6 php version 4.3.6 Parse error: parse error, unexpected ']', expecting '(' in cevin on line 6 php version 4.3.5 Parse error: parse error, unexpected ']', expecting '(' in cevin on line 6 php version 4.3.4 Parse error: parse error, expecting `'('' in cevin on line 6 php version 4.3.3 Parse error: parse error, expecting `'('' in cevin on line 6 php version 4.3.2 Parse error: parse error, expecting `'('' in cevin on line 6 php version 4.3.1 Parse error: parse error, unexpected ']', expecting '(' in cevin on line 6 php version 4.3.0 Parse error: parse error, unexpected ']', expecting '(' in cevin on line 6 </code>
狮屎胜于熊便 ... 通过这份报告基本可以断定这是你的 php 环境的问题 ...
不用怀疑自己的知识 ... 在这件事情上你对单引号的理解是对的 ... 不要被误导了 ...
以及说 ... 如果你用的是 AppServ 提供的那个 php 6.0.0-dev 版本的 php 的话 ... 尽早换了吧 ...
恩 ... 就是这样啦 ...
你的代码写错了 $arr['self::d']
应该修改为 $arr[self::d]
朋友关键看这里哦
<code>in_array($key,array('a','b','c')) </code>
这说明$key范围只能是在a,b,c这三个范围才能输出$key
再说说判断条件中的isset($arr['self::d'])
在php中双引号中的变量是可以执行的,而单引号是不解析变量的
所以$arr['self::d']是不存在的 如果你需要将self::d当作键的话需可以这么做$arr[self::d]
所有最终你得到的结果是abc
一般php在用变量做键获取数组值时,不需要加引号,如$arr[$key]
对于你给出的问题,我刚做了实验
将 isset($arr['self::d'])
换成isset($arr[self::d])
即可
补充
针对你的补充的notice
信息,我也做了实验,echo $arr['self::d']
提示信息如下:
Notice: Undefined index: self::d in D:\servers\phpweb\guai.php on line 17
abc
并没有发现和你相同的报错信息,针对这个不同,你需要确认两点:
1、是否是由于你给出的例子和你真实想要写的代码之间有哪些不同导致了这个问题。
2、你的php版本是否太低。(我用的版本是PHP Version 5.4.5
)
这个问题需要先解决了你的补充问题。
1.执行 echo $arr['self::d']
给出的notice的是:
Notice: Undefined index: self::d
注意如果你把这翻译成中文应该是未定义的索引,而非未定义的常量。单引号不解析这句话是对的,因此php会直接在数组 $arr
中寻找索引(或者说下标,看你的习惯了)为 self::d
的元素,然后未找到,因此给出notice
2.为什么输出的是 abc 而非abcd?看完了上面的一个回答者问题就很容易了,因为单引号不解析,而 $arr
中索引为 self::d
的元素不存在,因此 isset($arr['self::d'])
这一个表达式是为 false 的。修正的方法(我觉得也是你的本意)其他几位已经回答了,把 $arr['self::d']
改为 $arr[self::d]
。没有了单引号,那 self::d
就会被解析执行,判断的就是 $arr['d']
了。
其实只要在你调用之前用var_dump来输出一下变量的值,看看输出结果是什么就可以了。'self::d',"self::d"始终获得的是本身的字符串。

PHP는 동적 웹 사이트를 구축하는 데 사용되며 해당 핵심 기능에는 다음이 포함됩니다. 1. 데이터베이스와 연결하여 동적 컨텐츠를 생성하고 웹 페이지를 실시간으로 생성합니다. 2. 사용자 상호 작용 및 양식 제출을 처리하고 입력을 확인하고 작업에 응답합니다. 3. 개인화 된 경험을 제공하기 위해 세션 및 사용자 인증을 관리합니다. 4. 성능을 최적화하고 모범 사례를 따라 웹 사이트 효율성 및 보안을 개선하십시오.

PHP는 MySQLI 및 PDO 확장 기능을 사용하여 데이터베이스 작업 및 서버 측 로직 프로세싱에서 상호 작용하고 세션 관리와 같은 기능을 통해 서버 측로 로직을 처리합니다. 1) MySQLI 또는 PDO를 사용하여 데이터베이스에 연결하고 SQL 쿼리를 실행하십시오. 2) 세션 관리 및 기타 기능을 통해 HTTP 요청 및 사용자 상태를 처리합니다. 3) 트랜잭션을 사용하여 데이터베이스 작업의 원자력을 보장하십시오. 4) SQL 주입 방지, 디버깅을 위해 예외 처리 및 폐쇄 연결을 사용하십시오. 5) 인덱싱 및 캐시를 통해 성능을 최적화하고, 읽을 수있는 코드를 작성하고, 오류 처리를 수행하십시오.

PHP에서 전처리 문과 PDO를 사용하면 SQL 주입 공격을 효과적으로 방지 할 수 있습니다. 1) PDO를 사용하여 데이터베이스에 연결하고 오류 모드를 설정하십시오. 2) 준비 방법을 통해 전처리 명세서를 작성하고 자리 표시자를 사용하여 데이터를 전달하고 방법을 실행하십시오. 3) 쿼리 결과를 처리하고 코드의 보안 및 성능을 보장합니다.

PHP와 Python은 고유 한 장점과 단점이 있으며 선택은 프로젝트 요구와 개인 선호도에 달려 있습니다. 1.PHP는 대규모 웹 애플리케이션의 빠른 개발 및 유지 보수에 적합합니다. 2. Python은 데이터 과학 및 기계 학습 분야를 지배합니다.

PHP는 전자 상거래, 컨텐츠 관리 시스템 및 API 개발에 널리 사용됩니다. 1) 전자 상거래 : 쇼핑 카트 기능 및 지불 처리에 사용됩니다. 2) 컨텐츠 관리 시스템 : 동적 컨텐츠 생성 및 사용자 관리에 사용됩니다. 3) API 개발 : 편안한 API 개발 및 API 보안에 사용됩니다. 성능 최적화 및 모범 사례를 통해 PHP 애플리케이션의 효율성과 유지 보수 성이 향상됩니다.

PHP를 사용하면 대화식 웹 컨텐츠를 쉽게 만들 수 있습니다. 1) HTML을 포함하여 컨텐츠를 동적으로 생성하고 사용자 입력 또는 데이터베이스 데이터를 기반으로 실시간으로 표시합니다. 2) 프로세스 양식 제출 및 동적 출력을 생성하여 htmlspecialchars를 사용하여 XSS를 방지합니다. 3) MySQL을 사용하여 사용자 등록 시스템을 작성하고 Password_Hash 및 전처리 명세서를 사용하여 보안을 향상시킵니다. 이러한 기술을 마스터하면 웹 개발의 효율성이 향상됩니다.

PHP와 Python은 각각 고유 한 장점이 있으며 프로젝트 요구 사항에 따라 선택합니다. 1.PHP는 웹 개발, 특히 웹 사이트의 빠른 개발 및 유지 보수에 적합합니다. 2. Python은 간결한 구문을 가진 데이터 과학, 기계 학습 및 인공 지능에 적합하며 초보자에게 적합합니다.

PHP는 여전히 역동적이며 현대 프로그래밍 분야에서 여전히 중요한 위치를 차지하고 있습니다. 1) PHP의 단순성과 강력한 커뮤니티 지원으로 인해 웹 개발에 널리 사용됩니다. 2) 유연성과 안정성은 웹 양식, 데이터베이스 작업 및 파일 처리를 처리하는 데 탁월합니다. 3) PHP는 지속적으로 발전하고 최적화하며 초보자 및 숙련 된 개발자에게 적합합니다.


핫 AI 도구

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

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

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

Clothoff.io
AI 옷 제거제

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

인기 기사

뜨거운 도구

맨티스BT
Mantis는 제품 결함 추적을 돕기 위해 설계된 배포하기 쉬운 웹 기반 결함 추적 도구입니다. PHP, MySQL 및 웹 서버가 필요합니다. 데모 및 호스팅 서비스를 확인해 보세요.

ZendStudio 13.5.1 맥
강력한 PHP 통합 개발 환경

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

SublimeText3 영어 버전
권장 사항: Win 버전, 코드 프롬프트 지원!

SublimeText3 Linux 새 버전
SublimeText3 Linux 최신 버전
