1.指针悬挂问题
$array=[1,2,3];
echoimplode(‘,’,$array),"\n";
foreach($arrayas&$value){}//byreference
echoimplode(‘,’,$array),"\n";
foreach($arrayas$value){}//byvalue(i.e.,copy)
echoimplode(‘,’,$array),"\n";
正确答案应该是:
1,2,3
1,2,2
解释:
我们来分析下。第一个循环过后,$value是数组中最后一个元素的引用。第二个循环开始:
第一步:复制
第二步:复制
第三步:复制
2.以下结果输出:
<?php
$test=null;
if(isset($test)){
echo"true";
}else{
echo"false";
}
?>
正确答案:false
解释:对于
判断一个变量是否真正被设置(区分未设置和设置值为
3.以下结果能否打印出来,为什么?
classConfig{
private$values=[];
publicfunctiongetValues(){
return$this->values;
}
}
$config=newConfig();
$config->getValues()[‘test’]=’test’;
echo$config->getValues()[‘test’];
正确答案:
不行,因为在
classConfig{
private$values=[];
//returnaREFERENCEtotheactual$valuesarray
publicfunction&getValues(){
return$this->values;
}
}
$config=newConfig();
$config->getValues()[‘test’]=’test’;
echo$config->getValues()[‘test’];
就可以了。
知识要点:PHP中对于对象,,默认是引用返回,数组和内置基本类型默认均按值返回。这个要与其它语言区别开来(很多语言对于数组是引用传递)。
4.以下代码运行后服务器输出什么?
$.ajax({
url:’http://my.site/ndex.php’,
method:’post’,
data:JSON.stringify({a:’a’,b:’b’}),
contentType:’application/json’
});
var_dump($_POST);
答案:array(0){}
解释:
$_POST=json_decode(file_get_contents(‘php://input’),true);
这就解释了为什么微信公众平台开发时也要用这个方式获取微信服务器post的数据
6.以下代码输出的结果是:
for($c=’a’;$c<=’z’;$c++){
echo$c."\n";
}
正确答案:a…….z,aa…..yz
解释:在
但是PHP中如果比较的是两个纯数字的字符串时,首先尝试将其当成数字来比较的。
版权声明:本文为博主原创文章,未经博主允许不得转载。
太过于近,彼此身上隐性的刺又会深深的伤害对方。