php foreach, вложенный цикл, увеличенный повтор

У меня есть цикл, вложенный в цикл. Все данные отображаются нормально, пока я не попаду во второй цикл, и возвращенные данные будут повторяться. Доходит до того, что песни из элементов второго цикла повторяются более 15 раз.

вещь
-subitems

вещь
-subitems
-subitems

вещь
-subitems
-subitems
-subitems

вещь
-subitems
-subitems
-subitems
-subitems

Мне сказали очистить мою петлю, но я уверен, как это сделать. Есть идеи?
Вот живой пример, если нужно: view-source:http://mixtapemonkey.com/json

<?php
include ("connection.php");

foreach($db->query("SELECT * FROM mixtapes WHERE year='2014' OR year = '2015' ORDER BY id DESC LIMIT 24") as $info) {

echo "mixtape-".$info['id']," {\n";
echo "\t\"id\" : \"".$info['id']."\",\n";
echo "\t\"title\" : \"".$info['title']."\",\n";
echo "\t\"name\" : \"".$info['name']."\",\n";
echo "\t\"genre\" : \"".$info['genre']."\",\n";
echo "\t\"year\" : \"".$info['year']."\",\n";
echo "\t\"downloads\" : \"".$info['downloads']." Downloads\",\n";
echo "\t\"thumb\" : \"http://mixtapemonkey.com/".$info['thumb']."\",\n";
echo "\t\"songs\" : {\n";

if ($handle = opendir("mixtapes/zip/".$info['id'])) {
while (false !== ($entry = readdir($handle))) {
if ($entry != "mixtapes/zip/".$info['id'] && $entry != "mixtapes/zip/".$info['id']) {if ($newhandle = opendir("mixtapes/zip/".$info['id']."/".$entry)) {
while (false !== ($newentry = readdir($newhandle))) {
if ($newentry != "mixtapes/zip/".$info['id']."/".$entry && $newentry != "mixtapes/zip/".$info['id']."/".$entry) {

$ext = substr($newentry, strrpos($newentry, '.') + 1);
if ($ext == "mp3" || $ext == "m4a")
{
$item = "mixtapes/zip/".$info['id']."/".$entry."/";
$musicarray[] = $newentry;
sort($musicarray);
}
}
}
closedir($newhandle);
}

}
}
closedir($handle);
}
foreach ($musicarray as $song) {

echo "\t\t\"track\" : \"http://mixtapemonkey.com/$item$song\",\n";
}

echo "\t}\n";
echo "},\n\n";
}?>

1

Решение

У меня есть такая же проблема, и я решил ее, используя php break после цикла. Так что вы можете попробовать это.

break;
0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]