前言
投简历的时候,觉得自己PHP也凑合,就去面试了一次PHP,结果被“羞辱”了一番,果不其然,自己掂量了一下肚子里的水,没有多少。面试的大厦很破,估计是一家很老牌的公司,去之前,我特地查了查这家公司的背景,还是蛮老牌的,至少是家大型的公司,规模有个500人左右吧。
上机面试
这家公司很干脆,不给你做题,直接敲代码。
第一题
第一题我记得很清楚,问图片不显示是为什么?我就在想是不是URL的问题,是不是浏览器不兼容,但是确实没想到会不会是php.ini文件里图片库是否被注释掉了。于是第一题在对方提醒下完成了。
最后一题
我现在只记得最后一题,也是这次我想重点强调的,对方给了一个天气的接口,和返回格式,问我用PHP写一下,然后输出指定内容,例如:想找到天津的,今天的天气,然后输出。于是我就开始写代码了,对方还强调了一下,可以百度!
(内心OS:可以百度,那还不是分分钟的事情)实际上我真的写不出来,一来呢是紧张,二来呢,主要是PHP只是会基本语法,手撕原生代码,所以考基础我不怕,就怕有其他幺蛾子。
于是给了个接口:http://t.weather.sojson.com/api/weather/city/101030100
当时脑子就懵了,不是因为难,而是我没用过PHP来GET过接口,而且CURL当时也不会用,于是就随口来了句,用JS行不?对方告诉我可以,然后我脑子一抽,用了$.getJSON,对方告诉我这是jQuery封装的……我就脸红了。
<?php
// 1. 初始化
$ch = curl_init();
// 2. 设置选项,包括URL
curl_setopt($ch,CURLOPT_URL,"http://t.weather.sojson.com/api/weather/city/101030100");
curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch,CURLOPT_HEADER,0);
/*
curl_init() 和 curl_close() 分别是初始化CURL连接和关闭CURL连接,都比较简单。
curl_exec() 执行CURL请求,如果没有错误发生,该函数的返回是对应URL返回的数据,以字符串表示满意;如果发生错误,该函数返回 FALSE。需要注意的是,判断输出是否为FALSE用的是全等号,这是为了区分返回空串和出错的情况。
CURL函数库里最重要的函数是curl_setopt(),它可以通过设定CURL函数库定义的选项来定制HTTP请求。上述代码片段中使用了三个重要的选项:
CURLOPT_URL 指定请求的URL;
CURLOPT_RETURNTRANSFER 设置为1表示稍后执行的curl_exec函数的返回是URL的返回字符串,而不是把返回字符串定向到标准输出并返回TRUE;
CURLLOPT_HEADER设置为0表示不返回HTTP头部信息。
*/
// 3. 执行并获取HTML文档内容
$output = curl_exec($ch);
if($output === FALSE ){
echo "CURL Error:".curl_error($ch);
}
var_dump($output) ;
//转数组
$output=json_decode($output,true);
//保存一份原始
$op1=$output;
//查找data键值
$output=getTargetKeyArray($output,"data");
//查找forecast键值
$output=getTargetKeyArray($output,"forecast");
for($a=0;$a<count($output,0);$a++){
//找出日期为23
if($output[$a]["date"]=="23"){
var_dump($output[$a]) ;
}
}
// 4. 释放curl句柄
curl_close($ch);
//获取指定键值函数
function getTargetKeyArray($arr,$key){
foreach ($arr as $key1 => $value1) {
if($key1==$key)
return $value1;
}
}
?>
上面代码就是实现方式,用的CURL,当然用file_get_contents也是可以的
$html=file_get_contents($url);
总结
这算是一次比较基础的考试吧,然后我就发现了,我可能确实缺少很多实战经验,而且对PHP不够熟悉,确实差很多。这次经历,让我认识到,自己离真实的开发有很大差距,加油!
共同学习,写下你的评论
评论加载中...
作者其他优质文章