$ _post里面的for循环

时间:2014-05-02 08:51:00

标签: php arrays for-loop isset

我试图在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]仍然有&#39; text&#39;在里面。 for循环后的值不应该是$ _POST [$ field [0]]吗?我需要创建单独的数组吗?一个有字段名称,一个空存储$ _POST [field [i]]?

2 个答案:

答案 0 :(得分:3)

像这样改变:

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++)

您忘记在第二个&#39; i&#39;之前添加 $ 符号。在你的for循环中。

第二个条件是$i > 3。 您将$ i初始化为0并检查$ i是否大于3,如果它大于3,则增加$ i,这绝不会发生,因为$ i最初为0。

所以它必须是$i<3

答案 1 :(得分:0)

你可以这样做:

<?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>';
?>