0

以下のコードの目的は、日付と時刻 AM または PM の 2 つのパラメーターをチェックすることです。私のコードは機能しますが、より効率的で助けが必要な場合は作成しようとしています。1 日に 2 つの if ステートメントがあります。たとえば、この if ステートメントは、sun pm と sun am です。次に、mon tues、wed、thur があるので、これはかなり長いです。短くする方法があると言われました。助けてください。

if ($day == 'Sun' && $AMorPM == 'pm')
{
echo"
<fieldset>
<Legend><b>CHECK-OUT</b></Legend>
Date out:<input name='DateOut' type='text' value=$dateout disabled='disabled'><br>
Time out:<input name='TimeOut' type='text' value=$timeout disabled='disabled'> 
<input type='radio' name='AM'disabled='disabled'>AM 
<input type='radio' name='PM' checked disabled='disabled'>PM<br>
Day of week: <input type='radio' name='S'checked disabled='disabled'>S 
<input type='radio' name='Mon' disabled='disabled'>M 
<input type='radio' name='Tue'disabled='disabled'>T 
<input type='radio' name='Wed'disabled='disabled'>W 
<input type='radio' name='Thu'disabled='disabled'>R 
<input type='radio' name='Fri'disabled='disabled'>F 
<input type='radio' name='Sat'disabled='disabled'>S
</fieldset>";
}
4

2 に答える 2

0

曜日に関係なく、AM と PM で同じことをしますか? 時間帯に関係なく、毎日同じことをしていますか? もしそうなら、最初にAM/PMビットと曜日を別々に扱ってみませんか?

echo "<fieldset>
    <Legend><b>CHECK-OUT</b></Legend>
    Date out:<input name='DateOut' type='text' value=$dateout disabled='disabled'><br>
    Time out:<input name='TimeOut' type='text' value=$timeout disabled='disabled'> 
    <input type='radio' name='AM'";

if ($AMorPM == "am")
   echo " checked ";

echo "disabled='disabled'>AM <input type='radio' name='PM'";

if ($AMorPM == "pm")
    echo " checked ";

echo " disabled='disabled'>PM<br>";

そのコードは、選択された曜日に関係なく、その時間帯に必要なことを行います。次に、曜日ごとに同じことを行います。

于 2012-08-29T03:39:35.373 に答える
0

関数として設定できます-

//create array of days/short day codes
$day_array = array('Sun'=>'S', 'Mon'=>'M', 'Tue'=>'T', 'Wed'=>'W', 'Thu'=>'R', 'Fri'=>'F', 'Sat'=>'S');

//creates clock function
function clock($today, $ampm, $date, $time, $dayarray){

if ($ampm == 'am') {$punch_type =  "CHECK-IN";
                   $inout = 'in'; 
                   $inout_up = ucfirst($inout);
                   $checked_am = 'checked = "checked"';
} 
else               {$punch_type = "CHECK-OUT";
                   $inout = 'out'; 
                   $inout_up = ucfirst($inout);
                   $checked_pm = 'checked = "checked"';
}
//sets day of the week array vars, based of today
$dayof_week = $dayarray[$today];

echo"
<fieldset>
<Legend><b>$punch_type</b></Legend>
Date $inout:<input name='Date$inout_up' type='text' value=$date disabled='disabled'><br>
Time $inout:<input name='Time$inout_up' type='text' value=$time disabled='disabled'> 
<input type='radio' name='AM' $checked_am disabled='disabled'>AM <input type='radio' name='PM' $checked_pm disabled='disabled'>PM<br>
Day of week: ";

// loop through day array to create radios for every day of the week
foreach($dayarray as $key=>$value){
    // sets which day is checked
    $chkd = ($today == $key) ? ' checked = "checked"' : ''; 
    // creates each radio
    echo "<input type='radio' name='$key' $chkd disabled='disabled'>$value";}

echo"</fieldset>";
}

次に、次のようにして関数を呼び出すことができます-

clock("Sun", "am", "8/28/12", "10:30", $day_array);

これにより、毎日スクリプトを書き直す必要がなくなります。関数で4つの変数を動的に設定するだけで、時計が動的に構築/表示されます。

clock($day, $AMorPM, $date, $time, $day_array);
于 2012-08-29T04:31:02.430 に答える