批改状态:合格
老师批语:
1、XML 返回的数据
2、json 数据格式,不是php数据格式,没有相当于操作,只能把它转为数组,或者数组转为json
大括号{} 包裹着,通过key 和value,
key 和value,必须放在 “ “,key和value中间用 :英文的
2个值之间,用,英文逗号,跟数组一样
最后一个不加,号
数据值:
1.数字(浮点数和整数)
2.字符串,必须放在 “ “
3.布尔值,true和false
4.数组,放在[]中
5.对象,放在{}中
6.null
$obj = '{"qitiandasheng" : "齐天大圣","tianpengyuanshuai" : "天蓬元帅","erlangshen" : "二郎神"}';echo $obj;
因为不是php本身的数据格式,我们不会手动的把它输出出来。
// 比如说,js给接口的数据,是json的php $obj = '{"qitiandasheng" : "齐天大圣","tianpengyuanshuai" : "天蓬元帅","erlangshen" : "二郎神"}';echo $obj;// 想取到里面的值是不行的因为不是字符串,所以把它改为字符串print_r (json_decode($obj,true));// 赋值再打印$arr = json_decode($obj,true);print_r ($arr);
// 从数据库中,获取了数据,数据是数组,二维数组,我们要把它转为json数据,返给用户的人// 转回json// 返回json数据之前,或者再代码顶部,设置字符集// 1.浏览器字符集// 2.php字符集// 3.mysql字符集// header函数header('Cotent-Type:application/json');//返回json_encode不是UF-8会出现乱码,如果出现乱码 可以改为json格式echo json_encode($arr);// 接口API:都是以json数据 返回数据的// 完整的接口 :返回json数据 接口要的参数,安全问题。function get_url($url,$data,$is_post=0){$ch = curl_init(); // 创建一个curl,它一直存在在这里// // 要配置很多项。可以直接网上搜一个curl_setopt($ch, CURLOPT_URL ,'http://apis.juhe.cn/simpleWeather/query?key=abc4b64ae7656b460723402175a5650b&city=合肥');if($is_post == 0){if(!empty($data)){$url .= '?';foreach($data as $k=>$v){$url .= $k . '=' . $v . '&';}}}curl_setopt($ch, CURLOPT_URL ,$url);curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 3); // 在发起连接前等待的时间,如果设置为0,则无限等待。curl_setopt($ch, CURLOPT_TIMEOUT, 30); // 设置cURL允许执行的最长秒数。设置超时限制防止死循环curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);// 爬取重定向页面curl_setopt($ch, CURLOPT_AUTOREFERER, 1); // 自动设置Referer,防止盗链curl_setopt($ch, CURLOPT_HEADER, 0); // 显示返回的Header区域内容curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);// 要求结果保存到字符串中还是输出到屏幕上curl_setopt($ch, CURLOPT_USERAGENT, 'Data');// 在HTTP请求中包含一个"User-Agent: "头的字符串。curl_setopt($ch, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_1); // 强制使用 HTTP/1.1if($is_post == 1){curl_setopt($ch, CURLOPT_POST, 1); // 这个请求是postcurl_setopt($ch, CURLOPT_POSTFIELDS , $data);}$html = curl_exec($ch); // 去执行curl,并且打印出来,但是如果关闭了,就不会打印出来if(curl_errno($ch)){return curl_errno($ch);}curl_close($ch);return $html;}header( 'Content-Type:application/json' );$data = ['key' => 'abc4b64ae7656b460723402175a5650b','city' => '合肥'];$get_url = get_url('http://apis.juhe.cn/simpleWeather/query',$data);$arr = json_decode($get_url,true);print_r($get_url);print_r($arr);// 把$get_url解密
// 拿到数组以后 直接拿arr下面的error_code// 小程序、IOS、安卓。// 为什么它们很少去请求第三方的接口,而是我们php请求了以后,把数据给它们// 因为php请求了接口,重新组装好以后,它们拿到数据,就是这个格式。// 如果中间出现数据错误,换第三方,在用php写接口给前端,前端直接可以使用// 如果小程序、IOS、安卓, 它们请求第三方,改接口地址,这3个都需要重新上架// print_r($arr);if ($arr['error_code'] !=0){echo $arr['reason'];}else{$new_data = $arr['result']['future'];echo json_encode($new_data); //变为json字符串}
// 'fun.php' 属于路径的知识require './fun1.php';//引入新建的文件fun1.php
<?phpfunction a($num1,$num2){return $num1 + $num2;}function get_url($url,$data,$is_post=0){$ch = curl_init(); // 创建一个curl,它一直存在在这里// 要配置很多项。可以直接网上搜一个// curl_setopt($ch, CURLOPT_URL ,'http://apis.juhe.cn/simpleWeather/query?key=abc4b64ae7656b460723402175a5650b&city=合肥');if($is_post == 0){if(!empty($data)){$url .= '?';foreach($data as $k=>$v){$url .= $k . '=' . $v . '&';}}}curl_setopt($ch, CURLOPT_URL ,$url);curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 3); // 在发起连接前等待的时间,如果设置为0,则无限等待。curl_setopt($ch, CURLOPT_TIMEOUT, 30); // 设置cURL允许执行的最长秒数。设置超时限制防止死循环curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);// 爬取重定向页面curl_setopt($ch, CURLOPT_AUTOREFERER, 1); // 自动设置Referer,防止盗链curl_setopt($ch, CURLOPT_HEADER, 0); // 显示返回的Header区域内容curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);// 要求结果保存到字符串中还是输出到屏幕上curl_setopt($ch, CURLOPT_USERAGENT, 'Data');// 在HTTP请求中包含一个"User-Agent: "头的字符串。curl_setopt($ch, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_1); // 强制使用 HTTP/1.1if($is_post == 1){curl_setopt($ch, CURLOPT_POST, 1); // 这个请求是postcurl_setopt($ch, CURLOPT_POSTFIELDS , $data);}$html = curl_exec($ch); // 去执行curl,并且打印出来,但是如果关闭了,就不会打印出来if(curl_errno($ch)){return curl_errno($ch);}curl_close($ch);return $html;}
$fun = @include 'fun2.php';echo a(10,30);echo 111;// @ 符号,可以把错误信息屏蔽掉// 线下代码,不要增加@这个,测试时,不要增加// 不能屏蔽致命错误// include 有返回值,require 没有返回值// include 在加载文件失败时,会出现警告。require在加载失败时,会出现致命错误// 如果你要加载的文件,不可缺少,用require// 如果只是小问题,不影响逻辑处理,就用includeinclude_once 'fun1.php';include_once 'fun1.php';require_once 'fun1.php';require_once 'fun1.php';// require_one和include_one是一样的// 重复引入不会出错,引入多次也是只加载一次
// .和..是目录// . 代表当前目录// .. 代表上一级目录// 已经讲过的知识:// 1、数组// 2、数组循环// 3、数据类型// 4、if条件// 5、运算符、比较符// 6、超全局变量、系统常亮// 7、网络:curl、接口api、json数据、get和post
php:字符串、数字、null、布尔值。在数据库中,包含这些类型的数据
// 但是数据库有// getdate 获取当前日期和时间的详细信息,数据// print_r( getdate());//获取当天日期// $getdate = getdate();//给个变量// echo $getdate['year'] . '-' . $getdate['mon'] . '-' . $getdate['mday'];// 输出年月日// echo '<hr>';// 但是日期和时间,不好计算// 就出现了一个叫时间戳的东西// 是一个10位的整数,它代表当前年月日时分秒,1970-1-1 00:00:01 - 到现在echo time();echo '<hr>';echo time() + 15 * 24 * 60 * 60;echo '<hr>';// date 格式化日期,第一个参数,是日期时间格,第二个参数是要格式化的时间戳echo date('Y-m-d H:i:s',time()+ 15 * 24 * 60 * 60);// y代表年 m代表月 d代表日 H:i:s是时分秒echo '<hr>';// 时间戳能转换为日期那把它转回去// str在时分秒看来是字符串,所以str加to tim转为时间// strototim把日期时间转换为时间戳echo strtotime('now');//当前时间的时间戳echo'<hr>';echo strtotime('2021-12-30');// 封装json数据// php和js交互数据,除了普通的文本,多个数据的就是json字符串// $code等于0,代表成功,其他的都是失败,错误信息,也要给我们// function json_data($code,$data=[],$msg=''){// header( 'Content-Type:application/json' );$msg = [0 => '成功',1 => '网络错误',2 => '账户错误',3 => '密码错误'];if($code == 0){$arr = ['code' => 0,'msg' => '成功','data' => $data];}else{$arr = ['code' => $code,'msg' => $msg];}return json_encode($arr);}// 数据库中获取数据$data = [['name' => '欧阳克','age' => 38,'gongfu' => ['php','小程序']],['name' => '灭绝师太','age' => 18,'gongfu' => ['uniapp','php']],['name' => '朱天蓬','age' => 48,'gongfu' => ['html','css']]];// 1 网络错误// 2 账户错误// 3 密码错误// 4 账户被禁用,请找客服echo json_data(1,[],'账户被禁用');
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号