У меня есть проект, над которым я сейчас работаю, с ретранслятором, циклически повторяющим списки треков в альбоме (имена и длины).
Это занимает минуты и секунды (записанные в формате 00: 03: 22 в течение трех минут и двадцати двух секунд, например).
Теперь цель этого проекта состоит в том, чтобы каким-то образом иметь возможность отформатировать эту числовую строку, введенную пользователем, в какую-то переменную, которую PHP распознает как часы: минуты: секунды.
Затем, когда оператор foreach сортирует каждую дорожку альбома (через повторитель), суммирует длину каждой дорожки (в формате ЧЧ: ММ: СС).
Выводит итоговую сумму вотобразить «38 минут» (или что-то в этом роде).
Пример рабочего кода ниже (имейте в виду, что он может быть не очень чистым, и есть большая вероятность, что этот код может быть написан намного короче), но моя большая проблема здесь заключается в получении итоговых треков, суммируемых за пределамицикл foreach и сообщите пользователю, какова длина всего альбома.
Заранее благодарим вас за любую помощь, которую вы можете предоставить.
if( have_rows('tracks') ):
$count = count(get_field('tracks'));
$k = 1;
print $count . ' Total Songs';
$songs = get_field('tracks');
if($songs) {
$z = '00:00:00'; // Initial Time Setting Var
foreach($songs as $song)
{
$sl = $song['length']; /Song Length
$minutes = strstr($sl, ':', true); // Extract Minutes Value
if ( strlen($minutes) <= 2 ) { $minutes = '0' . $minutes; } // Format Minutes Value to Dual Digit If Singular
$seconds = strstr($sl, ':'); // Extract Seconds Value
$seconds = str_replace(':', '', $seconds); // Remove : Before Seconds
$new_display = $minutes . ':' . $seconds; // Re-Format Minutes : Seconds
$full_display = '00:' . $new_display; // Add Hours : Before New Time Display
// Get Full Display Back To Seconds
$time = explode(':', $full_display);
$formatted_secs = ($time[0]*3600) + ($time[1]*60) + $time[2];
// Do Some Stuff For Me
echo '<p>Song'. $k .' = ' . $sl . '</p>';
echo 'Track Time For Track '. $k .' in minuntes is ' . $full_display . ' and is ' . $formatted_secs . ' seconds';
//$z = $z+= $full_display;
$k++; // Count
}
echo '<br>Total time is ' . $z; // Not Working Regardless
}