php字符串替换数组并创建新的嵌套数组

php字符串替换数组并创建新的嵌套数组,php,Php,我有一个数组,我可以用 print_r($show_arr); 它给了我这个outputhtml源 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

我有一个数组,我可以用

print_r($show_arr);
它给了我这个outputhtml源

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",
                          )
                  )

我很无聊。只需循环数组并使用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后面跟一个或多个数字,后面跟一个或多个非点。字符捕获为第2组
此外,这将按情节索引子阵列。如果您不想这样做,请删除[int$m[2]]并使用[]。

我认为您应该尝试一些代码。请发布您迄今为止尝试过的代码,并回顾一下,因为这不是一项免费的编码服务。是的,我知道有些人还是这么做了。你应该自己尝试解决这个问题。如果你不能让它工作,张贴你尝试,我们将帮助你修复它。