Blogger Information
Blog 16
fans 0
comment 0
visits 16148
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
json数据与时间戳
Leo的博客
Original
1687 people have browsed it

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,[],'账户被禁用');
Correcting teacher:PHPzPHPz

Correction status:qualified

Teacher's comments:
Statement of this Website
The copyright of this blog article belongs to the blogger. Please specify the address when reprinting! If there is any infringement or violation of the law, please contact admin@php.cn Report processing!
All comments Speak rationally on civilized internet, please comply with News Comment Service Agreement
0 comments
Author's latest blog post