Heim >Backend-Entwicklung >PHP-Tutorial >两道面试题解决方法

两道面试题解决方法

WBOY
WBOYOriginal
2016-06-13 12:17:00807Durchsuche

两道面试题
1. 下面语句输出什么?为什么?
if ($a=$b) printf(“a==b”);
else printf(“a!=b”);
2. $array[‘anykey’]和$array[anykey]有什么区别?
(我的想法:第一题 因为$a=$b ,而$b没赋值,所以两个都为空,输出"a==b".但实际运行时输出"a!=b",这个我就不解了.
                第二题 我就不知道这题的用意了,一个索引是字符,一个是变量吧)
------解决思路----------------------
1、a!=b
题目没给 $b 赋值所以 $b 空,$a=$b 返回空,进入 false 分枝

2、
$array[‘anykey’] 中的 anykey 是字符串
$array[anykey] 中的 anykey 是常量
当屏蔽了 E_NOTICE 级别错误 时两者一样

------解决思路----------------------
1. $a=$b
因为$b没有值,所以是null,$a=$b后,$a也是null,所以if($a) 为null 即false
如果加一句
$b=1;
if ($a=$b) printf("a==b");
else printf("a!=b");
这样就返回true

2.
$array[‘anykey’]和$array[anykey]
如果没有加单引,系统会在找不到后自动帮你加上再查找一次。所以是一样,不过如果不加会有notice提示,并且需要查多一次导致资源浪费。
------解决思路----------------------
1.楼主可以单独输出 $a=$b 的值就知道为什么输出"a!=b"

2.$array[‘anykey’]和$array[anykey],建议用前者,性能高

Stellungnahme:
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