PHP面试题遇到的几个坑。...面壁ing PHP
1.指针悬挂问题
$array = [1, 2, 3];
echo implode(',', $array), "\n";
foreach ($array as &$value) {} // by reference
echo implode(',', $array), "\n";
foreach ($array as $value) {} // by value (i.e., copy)
echo implode(',', $array), "\n";
正确答案应该是:
1,2,3
1,2,2
解释:
我们来分析下。第一个循环过后,$value是数组中最后一个元素的引用。第二个循环开始:
第一步:复制$arr[0]到$value(注意此时$value是$arr[2]的引用),这时数组变成[1,2,1]
第二步:复制$arr[1]到$value,这时数组变成[1,2,2]
第三步:复制$arr[2]到$value,这时数组变成[1,2,2]
2.以下结果输出:
<?php
$test=null;
if(isset($test)){
echo "true";
}else{
echo "false";
}
?>
正确答案:false
解释:对于 isset() 函数,变量不存在时会返回false,变量值为null时也会返回false。
判断一个变量是否真正被设置(区分未设置和设置值为null),array_key_exists()函数或许更好。
3.以下结果能否打印出来,为什么?
class Config{
private $values = [];
public function getValues() {
return $this->values;
}
}
$config = new Config();
$config->getValues()['test'] = 'test';
echo $config->getValues()['test'];
正确答案:
不行,因为在PHP中,除非你显示的指定返回引用,否则对于数组PHP是值返回,也就是数组的拷贝。因此上面代码对返回数组赋值,实际是对拷贝数组进行赋值,非原数组赋值。如果把代码改成:
class Config{
private $values = [];
// return a REFERENCE to the actual $values array
public function &getValues() {
return $this->values;
}
}
$config = new Config();
$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){}
解释:PHP仅仅解析Content-Type为 application/x-www-form-urlencoded 或 multipart/form-data的Http请求。之所以这样是因为历史原因,PHP最初实现$_POST时,最流行的就是上面两种类型。因此虽说现在有些类型(比如application/json)很流行,但PHP中还是没有去实现自动处理。因为$_POST是全局变量,所以更改$_POST会全局有效。因此对于Content-Type为 application/json 的请求,我们需要手工去解析json数据,然后修改$_POST变量。
$_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中不存在char数据类型,只有string类型。明白这点,那么对'z'进行递增操作,结果则为'aa'。对于字符串比较大小,学过C的应该都知道,'aa'是小于'z'的。这也就解释了为何会有上面的输出结果。
但是PHP中如果比较的是两个纯数字的字符串时,首先尝试将其当成数字来比较的。
版权声明:本文为博主原创文章,未经博主允许不得转载。
盗墓笔记mkv高清在线观看下载百度云盘Mrxn分享 影音分享
盗墓笔记mkv高清在线观看下载百度云盘Mrxn分享
我就不多介绍了.自己下载观看吧.
下载地址:
链接:http://pan.baidu.com/s/1pJl5SL1 密码:e2bn
备用连接:http://yunpan.cn/ccQpk7IsecNb5 (提取码:91e5)
破解百度网盘私密分享密码-就是这么任性 破解软件
今天Mrxn给大家分享的一款小工具就是破解百度网盘私密分享密码.百度网盘的私密分享,想不大家都不陌生,就不做过多介绍;
有时候知道了链接,去不知道密码,比如你通过百度搜索引擎搜索到了你想要的资源在某个论坛的帖子里面,但是恰好,这个帖子给除了地址,但是密码 需要回复可见,而此论坛又需要邀请码注册,此时,这个小工具就派上用场了.
我作为测试,就拿自己分享的来测试了一下,速度很快;
可破解百度网盘分享的加密文件,破解时间决定于网络速度,百分百可以破解,只是时间问题,百度网盘是 4位加密的,以26位小写字母 和10位数字组成,也就是跑包1679616次就能试出密码,
本软件只提供技术交流!产生的任何法律责任与作者无关,切勿非法用途!
2015-7-3 更新
【百度网盘加密文件破解V2.0】
1, 增加定位穷举功能,可定义位置穷举,
2,增加保存进度功能,跑到一半是再也不怕死机了,
3,增加防掉包,漏包效率,
4,优化数据读取速度
5,优化界面
原先是需要注册的,但是已被爆菊.直接使用打开就是已注册版.
链接格式:
打开这个 链接:http://pan.baidu.com/s/1bnbKq7t 后跳转到如下这个地址格式的页面;
http://pan.baidu.com/share/init?shareid=4229148963&uk=2132293084
复制到软件里面就可以了..效果杠杠的.
下载地址:
http://yunpan.cn/cQNJNsmQtIN2q (提取码:2b4c)(失效)
2015-12-7 更新链接:http://pan.baidu.com/s/1dEw5FLR
备用地址: https://userscloud.com/wxx7u3xrevro
PS:其实360云盘也有这种工具的.乌云上还提交过这个漏洞(貌似).
新东方零基础法语语音入门收费课程分享 资源分享
此教程由Mrxn's Blog分享.欢迎转载,请注明出处就行.
收费课程9.9元..我就免费分享了....哈哈
下面是课程截图:
下载地址:
http://pan.baidu.com/s/1gd92f5L
链接:http://pan.baidu.com/s/1bnbKq7t 密码:4vxd 如果连接失效,请及时告知我.
如何下载新东方的在线视频小计-已成功crack 技术文章
如何下载新东方的在线视频小计-已成功crack,Mrxn再次小计一下,一般日后查看.当然呢,各位需要的也可以留言帮你下载的.
首先呢,这个零基础法语语音入门课程是需要9.9元的.还是有点小贵! 最主要的是电脑端不能下载.在新东方在线手机APP端可以缓存....这是我所不能容忍的......
内容大致如下:
下图是Mrxn下载完所有的教程截图:
于是我就想下载下来.但是几经尝试,还是未果,常见的抓取下载方式都失败了.已近花费了我两个小时.......
不甘心....既然是flash播放,cookie存放信息,就没有理由找不到视屏原地址,甚至把新东方的swf逆向解码了,下面是swf的源代码:
从中得到了一个比较有用的信息就是下面的这个句子:
rtmp://fms.koolearn.com/vod2/mp4:xyz/fy/2014_fy_fyyy_Lww_1_1.mp4
因为当时看的是第一节的第一小节,我就想这文件命名是不是这个规律,只是后面的数字不同,代表不同的节数.最后证实这是正确的.
rtmp://fms.koolearn.com/vod2/mp4:xyz/fy/2014_fy_fyyy_Lww_1_1.mp4 rtmp://fms.koolearn.com/vod2/mp4:xyz/fy/2014_fy_fyyy_Lww_1_2.mp4 rtmp://fms.koolearn.com/vod2/mp4:xyz/fy/2014_fy_fyyy_Lww_1_3.mp4 rtmp://fms.koolearn.com/vod2/mp4:xyz/fy/2014_fy_fyyy_Lww_1_4.mp4 rtmp://fms.koolearn.com/vod2/mp4:xyz/fy/2014_fy_fyyy_Lww_1_5.mp4 rtmp://fms.koolearn.com/vod2/mp4:xyz/fy/2014_fy_fyyy_Lww_2_1.mp4 rtmp://fms.koolearn.com/vod2/mp4:xyz/fy/2014_fy_fyyy_Lww_2_2.mp4 rtmp://fms.koolearn.com/vod2/mp4:xyz/fy/2014_fy_fyyy_Lww_2_3.mp4 rtmp://fms.koolearn.com/vod2/mp4:xyz/fy/2014_fy_fyyy_Lww_2_4.mp4 rtmp://fms.koolearn.com/vod2/mp4:xyz/fy/2014_fy_fyyy_Lww_2_5.mp4 rtmp://fms.koolearn.com/vod2/mp4:xyz/fy/2014_fy_fyyy_Lww_2_6.mp4 rtmp://fms.koolearn.com/vod2/mp4:xyz/fy/2014_fy_fyyy_Lww_2_7.mp4 rtmp://fms.koolearn.com/vod2/mp4:xyz/fy/2014_fy_fyyy_Lww_2_8.mp4 rtmp://fms.koolearn.com/vod2/mp4:xyz/fy/2014_fy_fyyy_Lww_2_9.mp4 rtmp://fms.koolearn.com/vod2/mp4:xyz/fy/2014_fy_fyyy_Lww_2_10.mp4 rtmp://fms.koolearn.com/vod2/mp4:xyz/fy/2014_fy_fyyy_Lww_2_11.mp4 rtmp://fms.koolearn.com/vod2/mp4:xyz/fy/2014_fy_fyyy_Lww_2_12.mp4 rtmp://fms.koolearn.com/vod2/mp4:xyz/fy/2014_fy_fyyy_Lww_3_1.mp4 rtmp://fms.koolearn.com/vod2/mp4:xyz/fy/2014_fy_fyyy_Lww_3_2.mp4 rtmp://fms.koolearn.com/vod2/mp4:xyz/fy/2014_fy_fyyy_Lww_3_3.mp4 rtmp://fms.koolearn.com/vod2/mp4:xyz/fy/2014_fy_fyyy_Lww_3_4.mp4这是后话,只不过,如何下载呢? rtmp 我之前还只是在网上看到过这个,现在自己遇到了.真的很棘手,因为现在我国大部分的网站采用的都是http协议的视屏播放.即本地播放.所以都很容易下载. rtmp则是一种较新的协议.采用服务器实时播放.想在本地保存视屏就没那么容易了.
我又不是通信专业的,有没学过通信协议,顶多学过TCP/IP协议...那就只有向google 百度求救...终于找到方法下载,可是却不成功.....最终在hackup的提醒下,我成功的下载了rtmp视屏,还专门测试了新东方及其他采用rtmp协议播放视屏的网站,都成功了.
估计很多人都想知道怎么下载的,但是,处于版权原因,我就不再博客说明了.需要下载rtmp 新东方视屏的可以找我帮你下载.至少目前是可以成功下载的.明天把我今天自己下载的视屏分享给大家吧.希望可以帮助到有兴趣的童鞋.