我使用PHP创建播放列表。从目录中选择两首随机歌曲,它们的名称和位置存储在一个数组中,然后通过json_encode()写入文件。
$ arraySongs [] = array('name'=> $ songName,'mp3'=> $ webUrl);
这很有效。我可以制作一个很长的播放列表,一次两首歌。我也想删除歌曲,所以我有一个AJAX驱动删除按钮,发布要删除的曲目的ID,PHP然后加载整个曲目列表......
$ decoding = 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 Using:
<?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);
?>
答案 0 :(得分:1)
var_dump
print_r
或json_encode
整个内容
醇>
或者它是json_encode中的一个错误,它不会很好......
答案 1 :(得分:1)
使用带有参数%02d的php函数sprintf将轨道ID编码为2位甚至3位数。
这对我来说很好。