2012-07-27 52 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