getjson php 函数,PHP读写JSON文件以及jQuery的getJSON函数用法

在写的音乐网站中用到保存用户歌单功能,即用户登录后可以显示该用户之前保存的歌单,开始的思路是使用数据库来保存,后来为了方便于是考虑使用json数据格式来保存歌单,这样也和播放器插件的json参数比较契合.

读取JSON文件<?php

$filename = "chation99.json";

$json_string = file_get_contents($filename);

$data = json_decode($json_string, true);

// 显示出来看看

var_dump($data);

echo '
';

print_r($data);

echo '
';

?>

这里我们用到file_get_contents(path),这个函数来打开我们的json文件,然后用json_decode()函数来解析json数据,运行刚才的代码后,结果如下:

第一次输出 var_dump() :

3965_0.jpg

第二次输出 print_r() :

3965_1.jpg

这样表明我们已经成功的解析了从文件导入的json数据, 接下来我们对这些数据进行一些操作

PHP操作JSON数据

删除json数据元素

如果我们要操作JSON数据的话,必须先将JSON数据转化为数组模式,即json_decode()for($i=0;$i

if($data[$i]['title']=="顽固"){

echo $data[$i]['title'];

array_splice($data,$i,1);

break;

}

}

这段代码的意思即,我们查找json数据中如果有title的值为”顽固”的话,显示出这个title,然后用array_splice()函数来删除这个数组元素.

array_splice(array,array[index],code);

这个函数的参数,第一个接受一个数组,第二个接受一个数组的索引值,第三个参数表示要删除的个数(从index向后计算,1代表只删除当前索引值的元素,无参数表示index索引往后所有全部删除),这个函数的好处是,可以在中间的元素被删除后后面的元素自动向前补缺,不会存在空洞现象.

添加json数据元素$index = sizeof($data);

$data[$index]['mp3'] = "music/五月天-好好.mp3";

$data[$index]['oga'] = "";

$data[$index]['title'] = "好好";

$data[$index]['artist'] = "五月天";

$data[$index]['rating'] = "3";

$data[$index]['buy'] = "#";

$data[$index]['price'] = "";

$data[$index]['duration'] = "03:19";

$data[$index]['cover'] = "pic/userHead/bq2.jpg";

var_dump($data);

首先将data数组的长度缓存到一个index值里面,如果不这样做在接下来的添加过程中数组长度会逐个增大,

然后为索引值为长度的元素逐个添加各个属性,就完成了添加元素的操作

PHP写JSON文件$json_string = json_encode($data);

file_put_contents('chation99.json', $json_string);

先将data数组用json_encode()函数标准化为json数据字符串,然后将字符串写入到文件即可

file_put_contents(filename,filestring);

jQuery的getJSON函数

jQuery的getJSON函数属于jq Ajax的一种,异步的方式载入一个JSON文档

b9eb943c64228e1a1d1a82c8edab0d30.png

这里 ,我们的音乐网站上有一个播放器插件,需要一个json数据格式作为参数/* 初始化播放器 */

function player(username) {

$.getJSON("data/json/"+username+".json",function(data){

$('#musicplayer').ttwMusicPlayer(data,

{

currencySymbol: "",

buyText: " 下载",

tracksToShow: 10,

autoPlay: false,

ratingCallback: function (index, playlistItem, rating) {

},

jPlayer: {}

}

);

});

}

这样我们将username作为参数传入,可以保证不同的用户使用该播放器时载入相应的他们的歌单

接下来我们用JavaScript操作json数据的方式来为用户添加歌曲进歌单/* 从List收藏歌曲 */

function addByList(e){

//取得相应的歌曲信息

var tr = e.parentNode.parentNode,

img = tr.firstChild.firstChild,

url = img.getAttribute("src");

var name = tr.childNodes[1].innerHTML,

art = tr.childNodes[2].innerHTML;

var user = getCookie("music_identify");

var phpurl = "data/userlist/addmusic.php?name=" + name + "&art=" + art + "&cover=" + url + "&user=" + user;

if(user != ""){

e.setAttribute("href",phpurl);

}else{

removeElem("warningTip");

var tips = "登录后才能进行收藏或者下载 ! ";

var form = document.getElementById("music_box_play");

form.insertBefore(alertBox(tips, "warning"), form.childNodes[0]);

e.removeAttribute("target");

}

}

addmusic.PHP的代码如下<?php

//取得用户信息

$music_name = $_GET['name'];

$music_art = $_GET['art'];

$music_cover = $_GET['cover'];

$user_name = $_GET['user'];

//打开相应JSON文件

$filename = "../json/".$user_name.".json";

$json_string = file_get_contents($filename);

$data = json_decode($json_string, true);

//添加数据

$index = sizeof($data);

$data[$index]['mp3'] = "music/".$music_art."-".$music_name.".mp3";

$data[$index]['oga'] = "";

$data[$index]['title'] = $music_name;

$data[$index]['artist'] = $music_art;

$data[$index]['rating'] = "5";

$data[$index]['buy'] = "#";

$data[$index]['price'] = "";

$data[$index]['duration'] = $music_art;

$data[$index]['cover'] = $music_cover;

//写入文件

$json_string = json_encode($data);

file_put_contents('../json/'.$user_name.'.json', $json_string);

echo '';

?>

这样添加的歌单在 测试过程中又一个问题,浏览器会把json文件自动缓存到本地,为了防止浏览器缓存JSON文件导致的歌单更新无效,我们需要给浏览器一个信号,即每次加载的json文件都是新文件,这里我们只需要在getJSON()函数里加上一个参数即可,参数可以是时间戳或者随机数/* 初始化播放器 */

function player(username) {

var date = new Date();

mark = {Time:date.toDateString(),Math:Math.random()};

$.getJSON("data/json/"+username+".json",mark,function(data){

//do something ...

});

}

这样就可以保证每次都是重新加载JSON文件了.

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/488991.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

悬而未决的AI竞赛:全球企业人工智能发展现状

来源&#xff1a;德勤,智东西随着企业领袖逐渐将人工智能视为下一轮经济大扩张的重要推动力量&#xff0c;一种担忧错失良机的情绪在全球范围内日益蔓延。许多国家纷纷制定人工智能战略&#xff0c;通过资金投入、政策激励、人才发展和风险管理推进技术能力的发展。人工智能对于…

zbb20170228_spring_tdt

applicationContext.xml 的 TDT <?xml version"1.0" encoding"UTF-8"?> <beans xmlns"http://www.springframework.org/schema/beans" xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance" xmlns:aop"http://www…

python文件系统_你应该知道的10个Python文件系统方法

4.os.chdir("/absolute/or/relative/path")等价于macOS/Linux系统的cd命令此方法将当前工作目录更改为提供的绝对路径或相对路径。如果您的代码随后对文件系统做了其他更改&#xff0c;那么在使用try-except方法时处理任何抛出的异常都是一个好主意。否则&#xff0c…

php打包压缩下载多大,php多文件打包压缩下载简单示例

调用php中内置扩展ZipArchive类可以进行文件压缩打包下载&#xff0c;(PHP 5>5.2.0&#xff0c;PHP 7&#xff0c;PECL zip>1.1.0)调用php中内置扩展ZipArchive类可以进行文件压缩打包下载&#xff0c;(PHP 5>5.2.0&#xff0c;PHP 7&#xff0c;PECL zip>1.1.0)简…

Science揭示:身体如何应对细菌的“群体感应”

电子显微镜下的假单胞菌细菌。图片来源&#xff1a;MPIIB / Volker Brinkmann来源&#xff1a;中国生物技术网众所周知&#xff0c;细菌感染并不会马上导致疾病&#xff0c;只有在它们大量出现时才会对身体造成威胁。近日&#xff0c;发表在《Science》上的一项研究中&#xff…

MySql分页存储过程

分页获取数据 code DELIMITER $$ DROP PROCEDURE IF EXISTS testDB.GetRecordAsPage $$ CREATE PROCEDURE testDB.GetRecordAsPage (in tbName varchar(800),in fldName varchar(1000), in strWhere varchar(500),in pageIndex int,in pageSize int,in orderType int,in sortN…

python快速入门课堂笔记_Python 快速入门笔记(9):模块和包

本系列随笔是本人的学习笔记&#xff0c;初学阶段难免会有理解不当之处&#xff0c;错误之处恳请指正。转载请注明出处&#xff1a;https://www.cnblogs.com/itwhite/p/12302882.html。目录一、模块指定导入的符号列表模块查找的路径在模块中插入测试代码二、包一、模块所有 py…

mysql中的dump,从mysql中dump数据到本地

方法一&#xff1a;使用mysqldump命令&#xff0c;如&#xff1a; mysqldump -h10.90.6.237 -uf_insplat2car_r -P3306 -pxxxxxxxxx nbmp tb_tag_log --skip-lock-tables --set-charset --where"origin_chance_no like nbcar%" > dump.sql注意此方法默认情况下会在…

百度:2020年十大科技趋势

来源&#xff1a;6G俱乐部图片来源&#xff1a;百度2019&#xff0c;关于科技的鲜活记忆&#xff0c;正在快速变成时间洪流的一部分&#xff0c;也变成了我们读懂未来的钥匙。过去一年中&#xff0c;多技术融合正在加快&#xff0c;AI开发的门槛在迅速降低&#xff0c;产业智能…

数据绑定和第一个AngularJS 应用

Hello 小朋友 一&#xff1a; <input ng-model"name" type"text" placeholder"Your Name"> <h1>Hello {{ name }}</h1> 二&#xff1a; <body ng-app"myApp"><div ng-controller"MyController"&…

python实现采样函数_python中resample函数实现重采样和降采样代码

函数原型resample(self, rule, howNone, axis0, fill_methodNone, closedNone, labelNone, convention‘start, kindNone, loffsetNone, limitNone, base0, onNone, levelNone)比较关键的是rule,closed,label下面会随着两个用法说明降采样对时间数据细粒度增大&#xff0c;可以…

美国计划让“人工智能”去搜寻外星人!

来源&#xff1a;科学解码据美国太空网近日报道&#xff0c;美国国家航空航天局&#xff08;NASA&#xff09;官员称&#xff0c;他们希望利用人工智能&#xff08;例如机器学习&#xff09;技术&#xff0c;分析大型望远镜等收集的数据&#xff0c;从而帮助搜寻外星生命&#…

python的进程线程和协程_python成长之路 :线程、进程和协程

python线程进程与线程的历史我们都知道计算机是由硬件和软件组成的。硬件中的CPU是计算机的核心&#xff0c;它承担计算机的所有任务。 操作系统是运行在硬件之上的软件&#xff0c;是计算机的管理者&#xff0c;它负责资源的管理和分配、任务的调度。 程序是运行在系统上的具有…

iOS事件的响应和传递机制

跟二狗子哥哥交流的时候&#xff0c;他总说我&#xff0c;说的过程太业余。故 好好学习整理一下。努力不那么业余。 一、事件的产生、传递、响应&#xff1a; 1、事件从父控件依次传递到子控件&#xff0c;寻找最合适的子控件View。 2、寻找最合适的View的底层实现&#xff0c;…

php 树状数组公式,PY个树状数组

树状数组比较简单&#xff0c;于是就挑它下手了...于是生活终于也对咱下手了...要讲的就两个东西&#xff0c;一个是开数组&#xff0c;全局变量写最前面&#xff0c;数组是这么开的&#xff1a; f[0 for i in range(500005)]另外一个就是 注意 split()还有一句就是咱发现 pyth…

三宝机器人怎么充电_巨人通力导致吉祥三宝+36号故障怪现象的又一因素

想必大家都有过这样的经历&#xff1a;在电梯故障频繁出现时&#xff0c;明明可以判断是哪里的问题&#xff0c;但事实却是让你感觉不可思议&#xff0c;并且排查过程颇为周折。今天和大家分享一下我经历的巨人通力GPS30K电梯出现的吉祥三宝故障的排查过程。下图为电梯控制柜铭…

《自然》展望2020年重大科学事件!中国有两个大计划安排上了

来源&#xff1a;科技日报图片来源&#xff1a;Nature官网&#xff08;不包括标注了来源的图片&#xff09;“千门万户曈曈日&#xff0c;总把新桃换旧符”&#xff01;在辞旧迎新之际&#xff0c;我们除了要埋头梳理过去一年的悲欢得失&#xff0c;也应抬头眺望新一年的星辰大…

discuz search.php修改,discuz程序如何将热门搜索修改为指向门户搜索的方法

站长朋友们使用discuz论坛程序建站&#xff0c;细心的站长朋友们发现首页右上角有个热门搜索功能。这个功能的主要作用就是可以让会员们第一时间搜索到本论坛内需要找到的帖子&#xff0c;这样做就给会员朋友们提供了很大的好处&#xff0c;不用再为了找到需要的帖子而大费周章…

vue aplayer 进度条无法拖动_Vue-rideo-player视频播放插件的使用

***** git项目地址&#xff1a; https://github.com/surmon-china/vue-video-player***** 参考文章&#xff1a; https://www.jianshu.com/p/532fc1d8c90c使用安装&#xff1a; npm install vue-video-player --save2. 在main.js入口文件中引入import VideoPlayer from vue-vid…

php流程控制作业题,php流程控制

一、get传值我们请求服务器下一步操作啊&#xff0c;都是用get进行传值&#xff0c;然后服务器用预定义变量数组$_GET&#xff0c;接受。二、流程控制1 三元运算符 ? :逻辑很简单&#xff0c;就是设置条件&#xff0c;条件成立就执行“&#xff1f;” 。条件不成立就执行”:…