$_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>';
?>
Другие вопросы по тегам