我有一个数组,我可以用
打印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",
)
)
答案 0 :(得分:1)
我很无聊。只需循环数组并使用xintercept()
使用匹配的组构建数组:
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个或多个NOT点[^.]+
个字符.
是一个点\.S([\d]+)
,然后是.
,后跟一个或多个数字(作为第1组捕获)S
为E([0-9]+[^.]+)
后跟一个或多个数字后跟一个或多个NOT点E
个字符(捕获为第2组)此外,这将通过剧集索引子阵列。如果您不想要,请移除.
,然后使用[(int)$m[2]]
。