2017-08-25 30 views
0

我有一個數組,我可以PHP的字符串替換陣列,並創建新的嵌套數組

print_r($show_arr); 

它給了我這個輸出(HTML源代碼)打印

Array 
(
    [0] => Marvel's Daredevil.S01E01 - Into the Ring.mp4 
    [1] => Marvel's Daredevil.S01E02 - Cut Man.mp4 
    [2] => Marvel's Daredevil.S02E05 - Kinbaku.mp4 
    [3] => Marvel's Daredevil.S02E06 - Regrets Only.mp4 
) 

我怎麼會去讓數組看起來像這樣?

Array 
(
     Season[1] => Array 
        (
        Array(
          episode => "01 - Into the Ring", 
          file => "Marvel's Daredevil.S01E01 - Into the Ring.mp4", 
         ) 
        Array(
          episode => "02 - Cut Man", 
          file => "Marvel's Daredevil.S01E02 - Cut Man.mp4", 
         ) 
       ) 
     Season[2] => Array 
        (
        Array(
          episode => "05 - Kinbaku", 
          file => "Marvel's Daredevil.S02E05 - Kinbaku.mp4", 
         ) 
        Array(
          episode => "06 - Regrets Only", 
          file => "Marvel's Daredevil.S02E06 - Regrets Only.mp4", 
         ) 
       ) 
+3

我想你會嘗試一些代碼。 – TGrif

+2

請發表您到目前爲止所嘗試的內容,並查看[Ask] – Aron

+0

SO不是免費的編碼服務(是的,我知道有些人反正這麼做)。預計你會嘗試自己解決問題。如果無法正常工作,請發佈您嘗試的內容,我們會幫助您解決問題。 – Barmar

回答

1

我很無聊。只要環陣列,並且使用preg_match()使用匹配的組構建陣列:

foreach($show_arr as $val) { 
    preg_match('/[^.]+\.S([\d]+)E([0-9]+[^.]+).*/', $val, $m); 
    $result['Season'][(int)$m[1]][(int)$m[2]] = array('episode' => $m[2], 
                 'file' => $m[0]); 
} 
  • [^.]+爲1個或多個不點.字符
  • \.S([\d]+)是一個點.然後S隨後1個或多個數字(捕獲爲組1)
  • E([0-9]+[^.]+)E後跟1個或多個數字後跟1個或多個NOT點.個字符(捕獲爲組2)

此外,這個索引子集的情節。如果您不想要,請刪除[(int)$m[2]],然後使用[]