2011-09-09 44 views
0

我正在獲取一些$ _ POST瓦爾並把它們放在一個數組喜歡這樣的:的foreach空元素

foreach (array_keys($_POST) as $key) { 
    $clean[$key] = mysql_real_escape_string($_POST[$key]); 
} 

結果是這樣一個數組:

Array 
(
    [pers_anrede] => Frau 
    [pers_titel] => Dr. 
    [pers_vorname] => BLa 
    [pers_nachname] => blablabla 
    [pers_vorwahl] =>
    [pers_telefon] => 3456789 
    [job_bundesland] => Berlin 
    [job_plz] => 
    [job_ort] => 
    [job_str] => 
) 

現在,我想要做的是某種形式的簡單驗證。如果上述陣列的元件具有任何值,其誤差被設置爲false。如果該元素的值缺失,則其錯誤設置爲true。我想獲得一個這樣的數組(保持從上面的例子中的數據,僅最後三個元素會產生一個錯誤:

Array 
(
    [pers_anrede] => false 
    [pers_titel] => false 
    [pers_vorname] => false 
    [pers_nachname] => false 
    [pers_vorwahl] => false 
    [pers_telefon] => false 
    [job_bundesland] => false 
    [job_plz] => true 
    [job_ort] => true 
    [job_str] => true 
) 

與此陣我希望能夠做這樣的事情等:

if $error['pers_anrede'] == true { 
     $error_message = 'please correct blabla'; 
} 

感謝幫忙

回答

-1

這將遍歷你乾淨的數組的鍵和加載,如果它們是空的存儲真正的錯誤數組:

foreach (array_keys($clean) as $key) 
    $error[$key] = empty($clean[$key]); 

,或者如果你不想使用數組鍵:

foreach ($clean as $key => $value) 
    $error[$key] = empty($value); 
+1

-1無用使用array_keys的。結帳的foreach語法http://fr2.php.net/manual/en/control-structures.foreach.php – Alfwed

0

你可以用一對夫婦的陣列功能,讓那些在一個新的數組錯誤的項目的所有鍵:

$data = array(
    'pers_anrede' => 'Frau', 
    'pers_titel' => null, 
    'pers_vorname' => 'BLa', 
); 

$filtered = array_filter($data); 
$error = array_combine(array_keys(array_diff_key($data, $filtered)), 
         array(true)); 

然後:

if(isset($error['pers_titel'])) { 
    // blah 
} 

See it in action

0

這應該是容易多了一個foreach循環。

假設你存儲$陣列的方向。

foreach($array as $key => $value) { 
if($value == NULL){ 
    $array[$key] = true; 
}else{ 
    $array[$key] = false; 
} 
} 
1
foreach ($clean as $k => $value) { 
    $errors[$k] = empty($value); 
} 
0

爲了做您的驗證,你仍然需要foreach所$error陣列。

所以這是簡單的做你的驗證這樣的:

foreach ($clean as $key=>$value) { 
    if (empty($value)) { 
     $error_message .= "$key field is required<br/>"; 
    } 
} 
0

只需使用

foreach ($clean as $k => $value) { 
    $validate[$k] = ($value == "")?true:false; 
} 

空或默認array_filter函數將返回false,而您可能不希望零個值。

Returns FALSE if var has a non-empty and non-zero value.

The following things are considered to be empty:

"" (an empty string) 
0 (0 as an integer) 
0.0 (0 as a float) 
"0" (0 as a string) 
NULL 
FALSE 
array() (an empty array) 
var $var; (a variable declared, but without a value in a class)