Вывод результата цикла во внешний массив

Имеется допусти вот такой php код

$data = [
    'Перв.',
    'Втор.',
    'трет.',
    'Четверт.',
    'и тд.',
    ];
    echo '<select>';
   for ($i = 0; $i < count($data); $i++) {
         echo "<option value='$data[$i]'> $data[$i] </option>" ;
        }
    echo '</select>';

Он рабочий, но, допустим, я хочу вывести это из цикла, чтобы просто подставить переменные и это так же работало. Например:

`<form action="" method="GET">
        <select name="select">
        <option value="<?php $data[$i]; ?>"><?php $data[$i]; ?></option>
      </select>
   </form>`

Каким образом мне это реализовать?
Подозреваю, что с помощью функции, но у меня не получается, буду премного благодарен за любую помощь или подсказку.


Ответы (2 шт):

Автор решения: Denis640Kb

В общем, чтобы добавить всё это в форму (Каждый элемент массива, что было бы правильно) - Вы можете воспользоваться перебором массива и добавить всё это в форму:

<?php
$data = [
    'Перв.',
    'Втор.',
    'трет.',
    'Четверт.',
    'и тд.',
];
echo '<form action="" method="GET">';
echo '<select>';
foreach ($data as $item) {
    echo "<option value='$item'> $item </option>" ;
}
echo '</select>';
echo '</form>';

Если же Вы прям критично хотите перебирать каждый элемент вручную (Что изначально не корректно, так как элементов может быть много), то можете просто использовать индекс:

<?php
$data = [
    'Перв.',
    'Втор.',
    'трет.',
    'Четверт.',
    'и тд.',
];
?>

<form action="" method="GET">
    <select name="select">
        <option value="<?php echo $data[0]; ?>"><?php echo $data[0]; ?></option>
        <option value="<?php echo $data[1]; ?>"><?php echo $data[1]; ?></option>
        <option value="<?php echo $data[2]; ?>"><?php echo $data[2]; ?></option>
        <option value="<?php echo $data[3]; ?>"><?php echo $data[3]; ?></option>
        <option value="<?php echo $data[4]; ?>"><?php echo $data[4]; ?></option>
    </select>
</form>

Но ещё раз напомню, что учитывая, что в данном случае Вы не пользуетесь перебором массива, то и $i Вы использовать не можете, так как она будет находиться за пределами функции.

→ Ссылка
Автор решения: Tim ur
  function options()
     {  $data = [
        'Перв.',
        'Втор.',
        'трет.',
        'Четверт.',
        'и тд.',
        ];
         $result = ''; 
         foreach ($data as $d)
          { $result .= '<option value="' .$d .'">' . $d . '</option>'; 
        } return $result;
     }

Вот собственно примерно то чего я хотел .

→ Ссылка