我有一个数组
if (_UpdateWScontext.token == string.Empty) return 0;
我将尝试通过seaseons创建新数组,我的代码
Array
(
[0] => link/data_1/Serial/Outlander/outlander.s01e01.avi"
[1] => link/data_1/Serial/Outlander/outlander.s01e02.avi"
...
[15] => link/data_1/d2/Serial/Outlander/Outlander.s01e16.WEBDLRip.Rus.Eng.DV.AlexFilm.mp4"
[16] => link/data_1/Serial/Outlander/Outlander.s02e01.WEBDLRip.NewStudio.TV.avi"
[17] => link/data_1/Serial/Outlander/Outlander.s02e02.WEBDLRip.NewStudio.TV.avi"
...
[28] => link/data_1/Serial/Outlander/Outlander.s02e13.WEBDLRip.NewStudio.TV.avi"
[29] => link/data_1/Serial/Outlander/S3/Outlander.s03e01.WEBDLRip.NewStudio.TV.avi"
[30] => link/data_1/Serial/Outlander/S3/Outlander.s03e02.WEBDLRip.NewStudio.TV.avi"
)
但它返回
$i = 1;
foreach ($array as $items) {
switch (strpos($items, "s0" . $i)) {
case true: $seasons[$i][] = $items; break;
case false: $i++; break;
}
}
从第2季开始每个赛季跳过1次 - epizode。我怎么解决它?我的错误在哪里?或者如何使用regexp执行此操作?
答案 0 :(得分:1)
您要么换季或添加一集 - 这就是您要跳过第一集的原因。
您应该更改开关,以便在季节更改后,第一集也会添加到$seasons
数组中。
$i = 1;
foreach ($array as $items) {
switch (strpos($items, "s0" . $i)) {
case false: $i++; // no-break, execute next case;
case true: $seasons[$i][] = $items; break;
}
}
此代码不适用于无序的季节列表,或者如果缺少一个季节。这应该更好:
$seasons = [];
foreach ($array as $item) {
// Match '.s[0-9]e[0-9].'
if (preg_match('/\.s(\d+)e\d+\./', $item, $matches)) {
$seasonN = $matches[1]; // Season number from preg_match
$seasons[$seasonN][] = $item;
}
}
答案 1 :(得分:0)
这应该可以解决问题。
$seasons = [];
foreach($array as $seria)
if(preg_match('/\.s(\d+)/', $seria, $matches)) {
$seasons[$matches[1]][] = $season;
}