手记
下载APP

一次PHP面试-CURL

前言

投简历的时候,觉得自己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不够熟悉,确实差很多。这次经历,让我认识到,自己离真实的开发有很大差距,加油!

打开App,阅读手记
1人推荐
随时随地看视频慕课网APP