Ben PHP Video zaman kodu ile çalışmak için kullanıyorum bir algoritma ile bir mantık sorun ne şüpheli var. Tüm yardım takdir edilmektedir.
The Objective
Peki temelde ben zaman kodu ile çalışmak ve hesaplamalar yapmak istiyorum
Zaman kodu ile aşina olmayanlar için bu gibi görünüyor
01:10:58:12 or HH:MM:SS:FF 'AKA' HOURS:MINUTES:SECONDS:FRAMES
Ben bu formatı ile çalışan bana yardımcı olmak için HERE adlı komut kullandık.
The Problem
Şimdi ben sadece bu script çalışıyor diyebilirim! (Bu durumda eklemeler) kodunda hesaplamalar doğru yapılmaktadır. Ancak bu komut dosyası sürekli aşağıdaki hataları atar, yine deneyin ve aşağıdaki hesaplama yapmak doğru çıktıyı üretir
00:01:26:00 + 00:02:00:12
Bu hesaplamadan hatalar aşağıda gösterilmiştir
A PHP Error was encountered
Önem: Bildirimi
Mesaj: Undefined index: anahtar
Dosya adı: personel / tools.php
Satır sayısı: 169
A PHP Error was encountered
Önem: Bildirimi
Mesaj: Undefined index: anahtar
Dosya adı: personel / tools.php
Satır sayısı: 169
Satır sayısı 169 parseInput() fonksiyonunda olduğu
// feed it into the tc array
$i=0;
foreach ($tc AS $key=>$value) {
if ( is_numeric($array["$i"]) ) {
$tc["$key"]= $array["$i"];
if ($tc["$key"] < 10 && $tc["$key"] > 0 && strlen($tc['key'])==1 ) $tc["$key"]= "0".$tc["$key"];
}
$i++;
}
return $tc;
Şimdi de yukarıdaki hata atılır kez sayısını ben hesaplarken ben ne bağlı olduğunu belirtmeliyim
00:00:00:00 + 00:00:00:00
Hiçbir hata verir.
01:01:01:01 + 02:02:02:02
yukarıdaki hataların 8 üretir.
Başvuru için, burada en bütünlük içinde kodudur
function add_cue_sheet_clips_process()
{
$sheetID = $_POST['sheet_id'];
$clipName = $_POST['clip_name'];
$tcIn = $_POST['tc_in'];
$tcOut = $_POST['tc_out'];
// string $input
// returns an associative array of hours, minutes, seconds, and frames
//
function parseInput ($input) {
// timecode should look something like hh:mm:ss;ff
// allowed separators are : ; . ,
// values may be single or double digits
// hours are least-significant -- 5.4 == 00:00:05;04
$tc= array("frames"=>"00", "seconds"=>"00", "minutes"=>"00", "hours"=>"00");
$punct= array(":", ";", ".", ",");
// too big? too small?
$input= trim($input);
if (strlen($input)>11 || $input=="") {
// invalid input, too long -- bzzt
return $tc;
}
// normalize punctuation
$input= str_replace( $punct, ":", $input);
// blow it up and reverse it so frames come first
$array= explode(":", $input);
$array= array_reverse($array);
// feed it into the tc array
$i=0;
foreach ($tc AS $key=>$value) {
if ( is_numeric($array["$i"]) ) {
$tc["$key"]= $array["$i"];
if ($tc["$key"] < 10 && $tc["$key"] > 0 && strlen($tc['key'])==1 ) $tc["$key"]= "0".$tc["$key"];
}
$i++;
}
return $tc;
}
// array $tc
// returns a float number of seconds
//
function tcToSec($tc) {
$wholeseconds= ($tc['hours']*3600) + ($tc['minutes'] * 60) + ($tc['seconds']);
$partseconds= ( $tc['frames'] / 25 );
$seconds= $wholeseconds + $partseconds;
return $seconds;
}
// float $seconds
// bool $subtract
// returns a timecode array
//
function secToTc ($seconds=0, $subtract=0) {
$tc= array("frames"=>"00", "seconds"=>"00", "minutes"=>"00", "hours"=>"00");
$partseconds= fmod($seconds, 1);
$wholeseconds= $seconds - $partseconds;
// frames
if ($subtract==1) $tc['frames']= floor( $partseconds * 25 );
else $tc['frames']= floor( $partseconds * 25 );
// hours
$tc['hours']= floor( $wholeseconds / 3600 );
$minsec= ($wholeseconds - ($tc['hours'] * 3600));
// minutes
$tc['minutes']= floor( $minsec / 60 );
// seconds
$tc['seconds']= ( $minsec - ($tc['minutes'] * 60) );
// padding
foreach ( $tc AS $key=>$value ) {
if ($value > 0 && $value < 10) $tc["$key"]= "0".$value;
if ($value=="0") $tc["$key"]= "00";
}
return $tc;
}
// array $tc
// returns string of well-formed timecode
//
function tcToString (&$tc) {
return $tc['hours'].":".$tc['minutes'].":".$tc['seconds'].";".$tc['frames'];
}
$timecodeIN = parseInput($tcIn);
$timecodeOUT = parseInput($tcOut);
// normalized inputs...
$tc1 = tcToString($timecodeIN);
$tc2 = tcToString($timecodeOUT);
// get seconds
$seconds1 = tcToSec($timecodeIN);
$seconds2 = tcToSec($timecodeOUT);
$result = $seconds1 + $seconds2;
$timecode3 = secToTc($result, 0);
$timecodeDUR = tcToString($timecode3);
$clipArray = array('clip_name' => $clipName, 'tc_in' => $tcIn, 'tc_out' => $tcOut, 'tc_duration' => $timecodeDUR);
$this->db->insert('tools_cue_sheets_clips', $clipArray);
redirect('staff/tools/add_cue_sheet_clips/'.$sheetID);
}
Ben bu bana bu üstüne almak yardımcı olmak için birisi için yeterli bilgi umut, ben son derece minnettar olacaktır.
Teşekkürler,
Tim