通过PHP播放音乐播放列表。 json_encode()数组限制?

时间:2010-10-11 07:48:55

标签: php ajax json playlist

我使用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);
?>

2 个答案:

答案 0 :(得分:1)

  1. 尝试删除未设置的元素
  2. 调试您的代码(未在帖子中发布,因此请自行完成),在var_dump
  3. 之前添加一行代表print_rjson_encode整个内容

    或者它是json_encode中的一个错误,它不会很好......

答案 1 :(得分:1)

使用带有参数%02d的php函数sprintf将轨道ID编码为2位甚至3位数。

这对我来说很好。