سؤال

يحتاج إلى مبطن لهذا: str_pad (شهر $، 2، "0"، str_pad_left) ولكن كيف / أين ؟؟؟

/*******creates the month selection dropdown array****/

 function createMonths($id='month_select', $selected=null)
    {
        /*** array of months ***/
        $months = array(
                1=>'Jan',
                2=>'Feb',
                3=>'Mar',
                4=>'Apr',
                5=>'May',
                6=>'Jun',
                7=>'Jul',
                8=>'Aug',
                9=>'Sep',
                10=>'Oct',
                11=>'Nov',
                12=>'Dec');

        /*** current month ***/
        $selected = is_null($selected) ? date('m') : $selected;

        $select = '<select name="'.$id.'" id="'.$id.'">'."\n";
        foreach($months as $key=>$mon)
        {
            $select .= "<option value=\"$key\"";
            $select .= ($key==$selected) ? ' selected="selected"' : '';
            $select .= ">$mon</option>\n";


        }
        $select .= '</select>';
        return $select;
    }

/********displays the month selection with current month selected/*******</br>
 echo createMonths('Month', date ('m')); 

/******DISPLAYS MONTH AS (4) INSTEAD OF REQUIRED (O4) --- @:( /*****</br>
echo $_POST['Month'];
هل كانت مفيدة؟

المحلول

حسنا، على افتراض أنها القيمة التي تريد أن تكون مبطنة، فهي هنا:

$select .= "<option value=\"$key\"";

يصبح

$select .= '<option value="'.str_pad($key, 2, "0", STR_PAD_LEFT).'"';

هذا يفترض أنك لا تريد أنه مبطن عندما تقوم بالتحقق من $selected, ، إذا قمت بذلك، فأنت بحاجة إلى القيام بذلك في بداية الحلقة، والكتابة فوق القيمة في $key, ، ثم يمكنك استخدام التعليمات البرمجية الأصلية، مثل ذلك:

foreach($months as $key=>$mon)
{
    $key = str_pad($key, 2, "0", STR_PAD_LEFT);
    $select .= "<option value=\"$key\"";
    $select .= ($key==$selected) ? ' selected="selected"' : '';
    $select .= ">$mon</option>\n";
}

نصائح أخرى

يمكنك استخدام printf() أو sprintf() مع سلسلة تنسيق:

$m = sprintf('%02d', (int) $_POST['Month']);

عندما تقول:

$select .= ">$mon</option>\n";

يجب عليك استخدام وظيفة STR_PAD، مثل هذا:

$select .= ">" . str_pad($mon, 2, "0", STR_PAD_LEFT) . "</option>\n";
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top