PHPを使用してプレイリストを作成しています。ディレクトリから 2 つのランダムな曲が選択され、その名前と場所が配列に格納され、json_encode() によってファイルに書き込まれます。
$arraySongs[] = array('name' => $songName , 'mp3' => $webUrl);
これはうまくいきます。一度に 2 曲ずつ、非常に長いプレイリストを作成できます。また、曲を削除したいので、削除するトラックのIDを投稿するAJAXを利用した削除ボタンがあり、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"...] になるのはなぜですか?
これを読んでくれてありがとう!どんな提案でも大歓迎です。これは私を夢中にさせています!
使用しているコードは次のとおりです。
<?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);
?>