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