【问题标题】:PHP field dropdown values from 08-17 instead of 00-17PHP 字段下拉值从 08-17 而不是 00-17
【发布时间】:2014-02-04 10:58:00
【问题描述】:

我对 php 的了解为零,非常感谢您的帮助。我有这个代码,我希望下拉字段显示从 08 到 17 的值(所以:08,09,10,11,12,13,14,15,16,17)。现在显示从 00 到 17。有人可以帮我解决这个问题吗?

这是代码:

// hours
    $string .= '        <option value=""></option>' . "\n";
    $tf_hours = (self::$form_options['time_format'] == '24') ? '17' : '12';
    for ( $keyi = (self::$form_options['time_format'] == '24') ? 0 : 1; $keyi <= $tf_hours; $keyi++ ) {
        $keyi = sprintf( "%02d", $keyi );
        if ( self::$form_content[$field['slug']]['h'] != '' ) {
            if ( self::$form_content[$field['slug']]['h'] == "$keyi" ) {
                $selected = ' selected="selected"';
            }
        }
        $string .= '        <option value="' . esc_attr( $keyi ) . '"' . $selected . '>' . esc_html( $keyi ) . '</option>' . "\n";
        $selected = '';
    }
    $string .= "      </select>:\n      <select ";
    $string .= ($field['input_css'] != '') ? self::convert_css( $field['input_css'] ) : self::get_this_css('select_style');
    $string .= ' id="fscf_field' . self::$form_id_num . '_' . $key . 'm" name="' . $field['slug'] . '[m]">' . "\n";
    $selected = '';

【问题讨论】:

  • 嗯,您可能要考虑使用模板库...

标签: php html field options


【解决方案1】:

改变

for ( $keyi = (self::$form_options['time_format'] == '24') ? 0 : 1; $keyi <= $tf_hours; $keyi++ )

for ( $keyi = (self::$form_options['time_format'] == '24') ? 8 : 9; $keyi <= $tf_hours; $keyi++ )

【讨论】:

    【解决方案2】:

    我认为从您当前的输出来看,self::$form_options['time_format'] 设置为 24。 for 循环的语法是

    for (expr1; expr2; expr3)
        statement
    

    这里expr1 在循环开始时执行once,如果expr2 被评估为TRUE,则执行语句,expr3 在每次迭代的end 处被评估。

    现在看下面的代码:

    $tf_hours = (self::$form_options['time_format'] == '24') ? '17' : '12';
    

    上述代码的作用是,如果时间格式为 24,则将 $tf_hours 设置为 17,如果不是,则设置为 12。

    for ( $keyi = (self::$form_options['time_format'] == '24') ? 0 : 1; $keyi <= $tf_hours; $keyi++ ) {
    

    现在上面的代码根据时间格式将expr1 (i.e $keyi)设置为0或1,expr2 ($keyi &lt;= $tf_hours)检查$keyi的值是否小于或等于$tf_hours中设置的值,如果为TRUE则执行循环内的代码,并在每次迭代结束时expr3 (ie $keyi++)$keyi 中设置的值加一。

    因此,for 循环中的代码将根据时间格式从零或一开始并循环 $tf_hours 次。

    因此,如果您希望从 08 开始,请在您的代码中将 expr1 设置为 8:

    for ( $keyi = (self::$form_options['time_format'] == '24') ? 8 : 1; $keyi <= $tf_hours; $keyi++ ) {
    

    希望对你有帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-01-24
      • 1970-01-01
      • 2022-07-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多