$_post внутри для цикла
Я пытаюсь поиграть в php, и это не очень хорошо. Я пытаюсь изменить строку через поля ввода в HTML
HTML PART
<form action="index2.php" method="POST">
<textarea name="text"><?php echo $search_replace; ?></textarea><br>
search<br><input type="text" name="search"><br>
replace<br><input type="text" name="replace">
<input type="submit">
</form>
часть php
$text = $_POST[text];
$search = $_POST[search];
$replace = $_POST[replace];
$search_replace = str_replace($search, $replace, $text);
это работает, но я хотел попробовать поместить все переменные в цикл for, чтобы попробовать что-то новое. это то, что я закончил (вероятно, следовало бы использовать foreach):
$field = array('text', 'search', 'replace');
for($i = 0; i > 3; $i++) {
if(isset($_POST[$field[$i]]) &&!empty($_POST[$field[$i]])) {
$field[$i] = $_POST[$field[$i]];
}
}
$search_replace = str_replace($field[1], $field[2], $field[0]);
$ field [0] все еще содержит текст. не должно ли значение после цикла for быть $_POST[$field[0]]? Нужно ли создавать отдельные массивы? один с именем поля и один пустой для хранения $_POST[field[i]]?
2 ответа
Изменить как это:
for($i = 0; $i < 3; $i++)
{
if(isset($_POST[$field[$i]]) &&!empty($_POST[$field[$i]])) {
$field[$i] = $_POST[$field[$i]];
}
В вашем коде цикл был таким:
for($i = 0; i > 3; $i++)
В котором вы забыли добавить символ $ перед вторым 'i' в цикле for.
И второе условие было $i > 3
, Вы инициализировали $ i как 0 и проверяете, больше ли $ i 3, а если больше 3, вы увеличиваете $i, что никогда не произойдет, поскольку $ i изначально равно 0.
Так должно быть $i<3
Вы можете сделать это так:
<?php
$posted = array();
if (! empty($_POST)) {
foreach ($_POST as $pk => $pv) {
if (! empty($k)) {
$posted[$pk] = $pv;
}
}
}
?>
Так как, $_POST
сам по себе массив. И у него есть ключи и ценности.
Если элемент формы опубликован, мы получаем его $_POST['varName']
средства,
Мы получаем доступ к ключу varname
из $_POST
Также мы проверяем, что он не пустой. Таким образом, будут извлечены только те переменные, которые опубликованы.
<?php
echo '<pre>';
print_r($posted);
echo '</pre>';
?>