2014-01-03 4 views
-1

Я пытаюсь написать код PHP, который может отображать художников слева от страницы (успех)
, но я не могу использовать этот массив художников, чтобы найти их песни и отобразится в правой части страницы. Названия песен являются отформатированный как это: «(Исполнитель) - (Song) .mp3»
Heres мой код:Я не могу создать многомерный массив в PHP

<?php 
// integer starts at 0 before counting 
$dir = 'songs/'; 
$i = 0; 
$artistExplode = array(); 
if ($handle = opendir($dir)) { 
$artists = array(); 
while (($file = readdir($handle)) !== false){ 
    if (!in_array($file, array('.', '..')) && !is_dir($dir.$file)) 
     $artistExplode[$i] = explode(" - ",$file); 
     $artist = @$artistExplode[$i][0]; 
     if(!in_array($artist, $artists)) { 
      $artists[$i] = $artist; 
      $i++; 
     } 
} 
} 
$x = $i; 
$i = 0; 
$songs = 0; 
while($x !== 1){ 
$i++; 
$songs++; 
if($handle = opendir($dir)) { 
    while(($file = readdir($handle)) !== false) { 
     if (!in_array($file, array('.', '..')) && !is_dir($dir.$file)) { 
      //echo $file."<hr />"; 
      $songs++; 
      $artists[$i][$songs] = $file; 
     } 
    } 
} 
    $artists[$i]; 
$x--; 
} 
print_r($artists); 

Я сделал некоторые исследования и не понимают, как эти случайные символы в массиве происходят из Я ожидал, что названия песен, чтобы прийти в подобласти для каждого художника

Вот выход print_r()

Array ([0] => [1] => 2 2DEEHKMTTT [2] => DVBBS & Borge2DEEHKMTTT [3] => Eminem 2DEEHKMTTT [4] => Hardwell & Dyro 2DEEHKMTTT [5] => Kanye West & Jay Z 2DEEHKMTTT [6] => Martin Garrix 2DEEHKMTTT [7] => TryHardNinja 2DEEHKMTTT) 
+0

Как вам "неисправного"? Что показывает 'print_r'? –

+0

Print_r показывает «Массив ([0] => [1] => 2 2DEEHKMTTT [2] => DVBBS & Borge2DEEHKMTTT [3] => Eminem 2DEEHKMTTT [4] => Hardwell & Dyro 2DEEHKMTTT [5] => Kanye West & Jay Z 2DEEHKMTTT [6] => Martin Garrix 2DEEHKMTTT [7] => TryHardNinja 2DEEHKMTTT) « Я понятия не имею, где эти случайные символы взяты из – robin00212

+0

. Какого результата вы хотите достичь. Можете ли вы показать пример? – Paul

ответ

1

Я хотел бы сделать, как это (непроверенные):

<?php 
// integer starts at 0 before counting 
$dir = 'songs/'; 
$i = 0; 
$artistExplode = array(); 
if ($handle = opendir($dir)) { 
$artists = array(); 
while (($file = readdir($handle)) !== false){ 
    if (!in_array($file, array('.', '..')) && !is_dir($dir.$file)) { 
     $artistExplode = explode(" - ",$file); 
     $artist = (string)trim($artistExplode[0]); 
     $song=(string)trim($artistExplode[1]); 

     if($artist<>'' && $song<>'') { 
      $artists[$artist][]=$song; 
     } 
    } 
} 
} 
print_r($artists); 
?> 
+0

Это работало очень хорошо, Большое спасибо за азерс :) – robin00212

+0

Ты рад !. – liu

1

Я сделал следующее испытание:

 $music[] = "Eminem - Survival.mp3"; 
     $music[] = "Eminem - Survival2.mp3"; 
     $music[] = "Eminem - Survival3.mp3"; 
     $music[] = "Eminem - Survival4.mp3"; 
     $music[] = "Jay Z - Song.mp3"; 
     $music[] = "Jay Z - Song1.mp3"; 
     $music[] = "Jay Z - Song2.mp3"; 

     foreach($music as $mus) 
     { 
      $artist[] = explode("-",$mus); 

     } 

     $test = "Eminem"; 
     echo "Eminem Songs"."</br>"; 
     foreach($artist as $art) 
     { 
      if(trim($art[0])==$test) 
      { 
       echo $art[1]."</br>"; 
      } 
     } 

     $test = "Jay Z"; 
     echo "Jay Z Songs"."</br>"; 
     foreach($artist as $art) 
     { 
      if(trim($art[0])==$test) 
      { 
       echo $art[1]."</br>"; 
      } 
     } 

Работа скрипку здесь: http://phpfiddle.org/main/code/n90-3td

+0

Хорошее предложение, но принятый олень был проще поместить в мой код, на мой взгляд. Но спасибо за awnser :) – robin00212

+0

Я рад помочь;) – Hackerman

Смежные вопросы