Вывод результата цикла во внешний массив
Имеется допусти вот такой 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 шт):
В общем, чтобы добавить всё это в форму (Каждый элемент массива, что было бы правильно) - Вы можете воспользоваться перебором массива и добавить всё это в форму:
<?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 Вы использовать не можете, так как она будет находиться за пределами функции.
function options()
{ $data = [
'Перв.',
'Втор.',
'трет.',
'Четверт.',
'и тд.',
];
$result = '';
foreach ($data as $d)
{ $result .= '<option value="' .$d .'">' . $d . '</option>';
} return $result;
}
Вот собственно примерно то чего я хотел .