2012-07-27 34 views
1

你好,我有一个简短的问题。我想重置将要发布的变量:php给空变量新内容

我会张贴来自输入字段的变量。当这个变量$_POST['a'];为空时,我想用新内容填充它。

的方案是这样的:

空变量将发布 - > PHP认识到,它是空的 - >赋予其新的内容 - >呼应了新的内容。

这仅仅是简单的,但它不为我工作。

因此,这里是我:

$a = $_POST['a']; 

if(empty($a){ 
    $errors['a'][]="text"; 
    $a =="new content"; 
} 

所以,如果有一个人能对子级告诉我,什么是错,我真的将不胜感激。非常感谢。

+6

'$ a ==“new content”;'看起来不正确。您可能需要1个等号作为分配而不是比较。 – 2012-07-27 12:49:27

+1

'='和'=='是不同的操作符。你应该在赋值中使用'=',在同情中使用'=='。 – Ozerich 2012-07-27 12:50:24

+0

也试图与===和离开引号只是分号...... – bonny 2012-07-27 12:50:40

回答

11

三件事:

$a = isset($_POST['a']) ? $_POST['a'] : ''; // always check if array index exists 

if(empty($a)) { // one more bracket 
    $errors['a'][]="text"; 
    $a ="new content"; // only one '=' 
} 
+0

+1检查存在索引和评论作出 – billyonecan 2012-07-27 12:54:07

2

你在你的代码的一个语法错误,和一个逻辑错误。

if (empty($a) {缺少结束)

而且你使用==做的任务,但它是用于比较。在这种情况下,您只想使用=

修改后的代码:

$a = $_POST['a']; 
if(empty($a)) { 
    $errors['a'][] = "text"; 
    $a = "new content"; 
} 
+0

这将不分配的$ A到$ _POST变量的值,我觉得OP是要求? – BenM 2012-07-27 12:52:08

+0

@BenM他将其分配给'$了'和'$了'检查,所以我的假设下,他从来没有使用'$ _ POST [“一”]再次'。 – newfurniturey 2012-07-27 12:53:44

+0

@BenM:我认为这只是'回声$ A;',而不是重新分配$ _ POST变量 – 2012-07-27 12:54:17

-1

你需要,如果你想在未来进行访问数组中的重新分配它。

$_POST['a'] = $a; 
+1

所做的更改不会做,验证输入蚂蚁把它变成新的变量。在你的代码中,你不应该直接处理输入数据。 – 2012-07-27 12:53:12

+0

我可以问什么原因?似乎最好重新使用内存,而不是创建更多变量。 – meiamsome 2012-07-27 12:55:00

+0

有很多很多原因。你说得对,重新使用记忆是一件好事。但绝不相信输入。所以,不要重复使用superglobals。始终将数据放入新变量中。 _所有输入都是evil_。通过这样做,您将不会忘记验证输入。 – 2012-07-27 12:56:20