从所有txt文件中生成第1行的数组

时间:2013-12-28 02:49:53

标签: php arrays

我有一个包含.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()是要走的路,但我不知道怎么做。

Page:http://flamencopeko.net/covers.php

来源:http://flamencopeko.net/covers.txt

3 个答案:

答案 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格式。我找到的所有例子似乎都没有用。