[英]Music playlist via PHP. json_encode() array limit?
我正在使用PHP创建播放列表。 从目录中选择两首随机歌曲,它们的名称和位置存储在数组中,然后通过json_encode()写入文件。
$ arraySongs [] = array('name'=> $ songName,'mp3'=> $ webUrl);
这非常有效。 我可以制作很长的播放列表,一次可以播放两首歌曲。 我还想删除歌曲,所以我有一个由AJAX驱动的删除按钮,该按钮发布了要删除的曲目的ID,然后PHP加载了整个曲目列表...
$ decoded = json_decode(file_get_contents($ tracklist),true);
并从数组中删除给定的歌曲,然后重新编码并重新写入json文本文件。 这一切都很好。
每当我尝试删除播放列表超过10个的任何内容时,都会出现问题。
通常,我的song.json文件为[{name:song1,mp3:song url},{name:song2,mp3:song2 url}],但是,当我有超过10个项目的列表时,重新编码的播放列表看起来像这个:
[{...},{name:song9,mp3:song9 url}],[10,{“ name”:song10,mp3:song10 url}]
为什么我重新编码的数组会变得很奇怪[10,{“ name” ... [11,{“ name” ... [12,{“ name” ......但10以下的东西总是可以的?
感谢您阅读本文! 任何建议将不胜感激,这真让我发疯!
这是im使用的代码:
<?php
$json = "song.php";
$decoded = json_decode(file_get_contents($json),true);
$playlist = array();
$names = array();
// Now Get i From Javascript
$i=$_POST['id'];
//Select i's Array
$collect_array=$decoded[$i];
while (list ($key, $val) = each ($collect_array)) {
//Remove i's Values
//echo "<br />$key -> $val <br>";
unset($decoded[$i]);
}
//Take all the remaining arrays
$collect_array=$decoded;
while (list ($key, $val) = each ($collect_array)) {
$arraySongs[] = array($key , $val);
}
// Our New Array ready for json.
$jsonData = json_encode($arraySongs);
// open song.php and scribble it down
$tracklist = $json;
$fh = fopen($tracklist, 'w') or die("can't open filename: $tracklist");
fwrite($fh, $jsonData);
fclose($fh);
?>
json_encode
之前在整行var_dump
或print_r
添加一行来调试代码(不在线程中发布,所以请自己完成) 或者这是json_encode中的错误,那不是很好...
使用带有参数%02d的php函数sprintf将轨道ID编码为2甚至3位数字。
这对我来说很好。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.