php foreach - это список, а не список - PullRequest
0 голосов
/ 13 февраля 2020

Я хочу удалить список года, начиная с текущего года и еще до 8 лет, но он перечисляет их. Я не могу выбрать год из выпадающего списка, потому что все они перечислены. Я хочу, чтобы они выпадали, чтобы я мог выбрать ту, которую я хочу из списка.

<?php
class BirthYear
{
    public function year(){
        $years = array(date("Y"));
        foreach($years as $year){
            for($i=0; $i < 8; $i++){
                $y = $year++;
                echo $y."<br>";
            }
        }
    }
}

$y = new BirthYear();
//echo $y->year();
?>
<html>
<style>
    label {
        font-size: 1rem;
        padding-right: 10px;
    }

    select {
        font-size: .9rem;
        padding: 2px 5px;
    }
</style>
<select name="birthYear" id="birthYear-select">
    <option value="">Please choose an option</option>
    <option value=""><?php echo $y->year();?></option>
</select>
</html>

Ответы [ 2 ]

0 голосов
/ 13 февраля 2020

Используйте что-то вроде этого:

<?php
class BirthYear
{
    public function year(){
        $y = array();
        $year = date("Y");
        for($i=0; $i < 8; $i++){
            $y[] = $year++;
        }
        return $y;
    }
}

$y = new BirthYear();
?>
<html>
<style>
    label {
        font-size: 1rem;
        padding-right: 10px;
    }

    select {
        font-size: .9rem;
        padding: 2px 5px;
    }
</style>
<select name="birthYear" id="birthYear-select">
    <option value="">Please choose an option</option>
    <?php foreach($y->year() as $year) {
        echo "<option value=\"$year\">$year</option>\n";
    }
    ?>

</select>
</html>

http://sandbox.onlinephpfunctions.com/code/9042c9b444bcc8281f9ef5de313513823477817f

0 голосов
/ 13 февраля 2020

Вот ты, go! Функция year () теперь возвращает год от текущего до следующих 8 лет. вы не перебирали массив, и вы даже ничего не возвращали за год (), из-за чего он был нулевым.

<?php
class BirthYear
{
    public function year()
    {
        $current_year = date("Y");
        $target_year = $current_year + 8;
        $years = array();
        do {
            array_push($years, $current_year);
            $current_year++;
        } while ($target_year >= $current_year);

        return $years;
    }
}

$y = new BirthYear();
$years = $y->year();
?>

<select name="birthYear" id="birthYear-select">
    <option value="">Please choose an option</option>
    <?php foreach ($years as $year) { ?>
        <option value="<?php echo $year; ?>"><?php echo $year; ?></option>
    <?php } ?>
</select>
...