繁体   English   中英

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

[英]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);
?>
  1. 尝试删除未设置的元素
  2. 通过在json_encode之前在整行var_dumpprint_r添加一行来调试代码(不在线程中发布,所以请自己完成)

或者这是json_encode中的错误,那不是很好...

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

这对我来说很好。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM