两道面试题

WBOY
WBOYOriginal
2016-06-23 13:37:56861browse

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],建议用前者,性能高

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn