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]]?
答案 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>';
?>