1、XML 返回的数据
2、json 数据格式,不是php数据格式,没有相当于操作,只能把它转为数组,或者数组转为json
大括号{} 包裹着,通过key 和value,
key 和value,必须放在 “ “,key和value中间用 :英文的
2个值之间,用,英文逗号,跟数组一样
最后一个不加,号
数据值:
1.数字(浮点数和整数)
2.字符串,必须放在 “ “
3.布尔值,true和false
4.数组,放在[]中
5.对象,放在{}中
6.null

因为json不在php中,json叫json字符串,它是字符串,就放到’’引号中。

  1. $obj = '{
  2. "qitiandasheng" : "齐天大圣",
  3. "tianpengyuanshuai" : "天蓬元帅",
  4. "erlangshen" : "二郎神"
  5. }';
  6. echo $obj;

因为不是php本身的数据格式,我们不会手动的把它输出出来。

  1. // 比如说,js给接口的数据,是json的
  2. php $obj = '{
  3. "qitiandasheng" : "齐天大圣",
  4. "tianpengyuanshuai" : "天蓬元帅",
  5. "erlangshen" : "二郎神"
  6. }';
  7. echo $obj;
  8. // 想取到里面的值是不行的因为不是字符串,所以把它改为字符串
  9. print_r (json_decode($obj,true));
  10. // 赋值再打印
  11. $arr = json_decode($obj,true);
  12. print_r ($arr);
  1. // 从数据库中,获取了数据,数据是数组,二维数组,我们要把它转为json数据,返给用户的人
  2. // 转回json
  3. // 返回json数据之前,或者再代码顶部,设置字符集
  4. // 1.浏览器字符集
  5. // 2.php字符集
  6. // 3.mysql字符集
  7. // header函数
  8. header('Cotent-Type:application/json');
  9. //返回json_encode不是UF-8会出现乱码,如果出现乱码 可以改为json格式
  10. echo json_encode($arr);
  11. // 接口API:都是以json数据 返回数据的
  12. // 完整的接口 :返回json数据 接口要的参数,安全问题。
  13. function get_url($url,$data,$is_post=0){
  14. $ch = curl_init(); // 创建一个curl,它一直存在在这里
  15. // // 要配置很多项。可以直接网上搜一个
  16. curl_setopt($ch, CURLOPT_URL ,'http://apis.juhe.cn/simpleWeather/query?key=abc4b64ae7656b460723402175a5650b&city=合肥');
  17. if($is_post == 0){
  18. if(!empty($data)){
  19. $url .= '?';
  20. foreach($data as $k=>$v){
  21. $url .= $k . '=' . $v . '&';
  22. }
  23. }
  24. }
  25. curl_setopt($ch, CURLOPT_URL ,$url);
  26. curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 3); // 在发起连接前等待的时间,如果设置为0,则无限等待。
  27. curl_setopt($ch, CURLOPT_TIMEOUT, 30); // 设置cURL允许执行的最长秒数。设置超时限制防止死循环
  28. curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);// 爬取重定向页面
  29. curl_setopt($ch, CURLOPT_AUTOREFERER, 1); // 自动设置Referer,防止盗链
  30. curl_setopt($ch, CURLOPT_HEADER, 0); // 显示返回的Header区域内容
  31. curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);// 要求结果保存到字符串中还是输出到屏幕上
  32. curl_setopt($ch, CURLOPT_USERAGENT, 'Data');// 在HTTP请求中包含一个"User-Agent: "头的字符串。
  33. curl_setopt($ch, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_1); // 强制使用 HTTP/1.1
  34. if($is_post == 1){
  35. curl_setopt($ch, CURLOPT_POST, 1); // 这个请求是post
  36. curl_setopt($ch, CURLOPT_POSTFIELDS , $data);
  37. }
  38. $html = curl_exec($ch); // 去执行curl,并且打印出来,但是如果关闭了,就不会打印出来
  39. if(curl_errno($ch)){
  40. return curl_errno($ch);
  41. }
  42. curl_close($ch);
  43. return $html;
  44. }
  45. header( 'Content-Type:application/json' );
  46. $data = [
  47. 'key' => 'abc4b64ae7656b460723402175a5650b',
  48. 'city' => '合肥'
  49. ];
  50. $get_url = get_url('http://apis.juhe.cn/simpleWeather/query',$data);
  51. $arr = json_decode($get_url,true);
  52. print_r($get_url);
  53. print_r($arr);
  54. // 把$get_url解密
  1. // 拿到数组以后 直接拿arr下面的error_code
  2. // 小程序、IOS、安卓。
  3. // 为什么它们很少去请求第三方的接口,而是我们php请求了以后,把数据给它们
  4. // 因为php请求了接口,重新组装好以后,它们拿到数据,就是这个格式。
  5. // 如果中间出现数据错误,换第三方,在用php写接口给前端,前端直接可以使用
  6. // 如果小程序、IOS、安卓, 它们请求第三方,改接口地址,这3个都需要重新上架
  7. // print_r($arr);
  8. if ($arr['error_code'] !=0){
  9. echo $arr['reason'];
  10. }else{
  11. $new_data = $arr['result']['future'];
  12. echo json_encode($new_data); //变为json字符串
  13. }

4、引入文件

  1. // 'fun.php' 属于路径的知识
  2. require './fun1.php';
  3. //引入新建的文件fun1.php

fun1.php代码

  1. <?php
  2. function a($num1,$num2){
  3. return $num1 + $num2;
  4. }
  5. function get_url($url,$data,$is_post=0){
  6. $ch = curl_init(); // 创建一个curl,它一直存在在这里
  7. // 要配置很多项。可以直接网上搜一个
  8. // curl_setopt($ch, CURLOPT_URL ,'http://apis.juhe.cn/simpleWeather/query?key=abc4b64ae7656b460723402175a5650b&city=合肥');
  9. if($is_post == 0){
  10. if(!empty($data)){
  11. $url .= '?';
  12. foreach($data as $k=>$v){
  13. $url .= $k . '=' . $v . '&';
  14. }
  15. }
  16. }
  17. curl_setopt($ch, CURLOPT_URL ,$url);
  18. curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 3); // 在发起连接前等待的时间,如果设置为0,则无限等待。
  19. curl_setopt($ch, CURLOPT_TIMEOUT, 30); // 设置cURL允许执行的最长秒数。设置超时限制防止死循环
  20. curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);// 爬取重定向页面
  21. curl_setopt($ch, CURLOPT_AUTOREFERER, 1); // 自动设置Referer,防止盗链
  22. curl_setopt($ch, CURLOPT_HEADER, 0); // 显示返回的Header区域内容
  23. curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);// 要求结果保存到字符串中还是输出到屏幕上
  24. curl_setopt($ch, CURLOPT_USERAGENT, 'Data');// 在HTTP请求中包含一个"User-Agent: "头的字符串。
  25. curl_setopt($ch, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_1); // 强制使用 HTTP/1.1
  26. if($is_post == 1){
  27. curl_setopt($ch, CURLOPT_POST, 1); // 这个请求是post
  28. curl_setopt($ch, CURLOPT_POSTFIELDS , $data);
  29. }
  30. $html = curl_exec($ch); // 去执行curl,并且打印出来,但是如果关闭了,就不会打印出来
  31. if(curl_errno($ch)){
  32. return curl_errno($ch);
  33. }
  34. curl_close($ch);
  35. return $html;
  36. }

返回原来的php

  1. $fun = @include 'fun2.php';
  2. echo a(10,30);
  3. echo 111;
  4. // @ 符号,可以把错误信息屏蔽掉
  5. // 线下代码,不要增加@这个,测试时,不要增加
  6. // 不能屏蔽致命错误
  7. // include 有返回值,require 没有返回值
  8. // include 在加载文件失败时,会出现警告。require在加载失败时,会出现致命错误
  9. // 如果你要加载的文件,不可缺少,用require
  10. // 如果只是小问题,不影响逻辑处理,就用include
  11. include_once 'fun1.php';
  12. include_once 'fun1.php';
  13. require_once 'fun1.php';
  14. require_once 'fun1.php';
  15. // require_one和include_one是一样的
  16. // 重复引入不会出错,引入多次也是只加载一次

5.路径

  1. // .和..是目录
  2. // . 代表当前目录
  3. // .. 代表上一级目录
  4. // 已经讲过的知识:
  5. // 1、数组
  6. // 2、数组循环
  7. // 3、数据类型
  8. // 4、if条件
  9. // 5、运算符、比较符
  10. // 6、超全局变量、系统常亮
  11. // 7、网络:curl、接口api、json数据、get和post

php:字符串、数字、null、布尔值。在数据库中,包含这些类型的数据

6、日期时间。在php里,能按照日期时间处理,但是呢,把它们还是当做字符串

  1. // 但是数据库有
  2. // getdate 获取当前日期和时间的详细信息,数据
  3. // print_r( getdate());//获取当天日期
  4. // $getdate = getdate();//给个变量
  5. // echo $getdate['year'] . '-' . $getdate['mon'] . '-' . $getdate['mday'];
  6. // 输出年月日
  7. // echo '<hr>';
  8. // 但是日期和时间,不好计算
  9. // 就出现了一个叫时间戳的东西
  10. // 是一个10位的整数,它代表当前年月日时分秒,1970-1-1 00:00:01 - 到现在
  11. echo time();
  12. echo '<hr>';
  13. echo time() + 15 * 24 * 60 * 60;
  14. echo '<hr>';
  15. // date 格式化日期,第一个参数,是日期时间格,第二个参数是要格式化的时间戳
  16. echo date('Y-m-d H:i:s',time()+ 15 * 24 * 60 * 60);
  17. // y代表年 m代表月 d代表日 H:i:s是时分秒
  18. echo '<hr>';
  19. // 时间戳能转换为日期那把它转回去
  20. // str在时分秒看来是字符串,所以str加to tim转为时间
  21. // strototim把日期时间转换为时间戳
  22. echo strtotime('now');//当前时间的时间戳
  23. echo'<hr>';
  24. echo strtotime('2021-12-30');
  25. // 封装json数据
  26. // php和js交互数据,除了普通的文本,多个数据的就是json字符串
  27. // $code等于0,代表成功,其他的都是失败,错误信息,也要给我们
  28. // function json_data($code,$data=[],$msg=''){
  29. // header( 'Content-Type:application/json' );
  30. $msg = [
  31. 0 => '成功',
  32. 1 => '网络错误',
  33. 2 => '账户错误',
  34. 3 => '密码错误'
  35. ];
  36. if($code == 0){
  37. $arr = [
  38. 'code' => 0,
  39. 'msg' => '成功',
  40. 'data' => $data
  41. ];
  42. }else{
  43. $arr = [
  44. 'code' => $code,
  45. 'msg' => $msg
  46. ];
  47. }
  48. return json_encode($arr);
  49. }
  50. // 数据库中获取数据
  51. $data = [
  52. [
  53. 'name' => '欧阳克',
  54. 'age' => 38,
  55. 'gongfu' => [
  56. 'php',
  57. '小程序'
  58. ]
  59. ],
  60. [
  61. 'name' => '灭绝师太',
  62. 'age' => 18,
  63. 'gongfu' => [
  64. 'uniapp',
  65. 'php'
  66. ]
  67. ],
  68. [
  69. 'name' => '朱天蓬',
  70. 'age' => 48,
  71. 'gongfu' => [
  72. 'html',
  73. 'css'
  74. ]
  75. ]
  76. ];
  77. // 1 网络错误
  78. // 2 账户错误
  79. // 3 密码错误
  80. // 4 账户被禁用,请找客服
  81. echo json_data(1,[],'账户被禁用');

更多相关文章

  1. MongoDB,真的是正确的选择吗?
  2. 用 Docker 无脑备份数据库
  3. Redis 21问,你接得住不?
  4. HBase 入门笔记-数据落地篇
  5. 如何实现 Docker 与分布式数据库结合
  6. ES6 和异步网络请求
  7. MongoDB 排序内存超过 32M 限制
  8. Oralce数据库设计规范V3
  9. 用MongoDB Change Streams 在BigQuery中复制数据

随机推荐

  1. Android优秀实例源码
  2. [Android] 基于 Linux 命令行构建 Androi
  3. android点滴2
  4. Android(安卓)【真机】与【模拟器】触摸
  5. Android安全机制解析与应用实践
  6. android media库中external的读取
  7. Python+Android开发
  8. Android开发优秀博文收录
  9. Android图文详解属性动画
  10. 使用android兼容包android-support-v4.ja