我有一个包含.txt文件的文件夹,其中包含有关歌曲的信息。这些文件和行位于由此代码生成的数组中:
$lyrics = glob('covers_info/*.txt');
foreach ($lyrics as $i => $file) {
$contents = file($file);
echo "<td class='notwrap bars' align='right' style='background-size:" . $time_seconds/10 . "px 100%;'>" . trim($contents[1]) . "</td>";
output more stuff here
}
.txt文件中的第一行包含MM:SS格式的歌曲长度。我已使用此代码将此转换为秒:
$str_time = trim($contents[1]);
sscanf($str_time, "%d:%d:%d", $hours, $minutes, $seconds);
$time_seconds = isset($seconds) ? $hours * 3600 + $minutes * 60 + $seconds : $hours * 60 + $minutes;
工作正常。
我正在尝试使用它来让总比赛时间低于桌面。
我认为array_sum()是要走的路,但我不知道怎么做。
答案 0 :(得分:1)
您可以使用变量本身计算时间,无需在此处使用数组。
$lyrics = glob('covers_info/*.txt');
$total_sec = 0;
foreach ($lyrics as $i => $file) {
$contents = file($file);
$str_time = trim($contents[1]);
sscanf($str_time, "%d:%d:%d", $hours, $minutes, $seconds);
$time_seconds = isset($seconds) ? $hours * 3600 + $minutes * 60 + $seconds : $hours * 60 + $minutes;
$total_sec += $time_seconds;
echo "<td class='notwrap bars' align='right' style='background-size:" . $time_seconds/10 . "px 100%;'>" . trim($contents[1]) . "</td>";
output more stuff here
}
您可以使用 $ total_sec 变量来检索总时间。
答案 1 :(得分:0)
$lyrics = glob('covers_info/*.txt');
$count = 0;
foreach ($lyrics as $i => $file) {
$count += $time_seconds;
$contents = file($file);
echo "<td class='notwrap bars' align='right' style='background-size:" . $time_seconds/10 . "px 100%;'>" . trim($contents[1]) . "</td>";
// output more stuff here
}
echo "Total song time: ".$time_seconds; // Format as you wish
答案 2 :(得分:0)
我还需要将echo格式化为hh:mm:ss格式。我找到的所有例子似乎都没有用。