2009-01-23 169 views
0

我目前正在嘗試驗證表單服務器端,它的工作方式是將所有數據放入數組中,並將表單字段作爲鍵和將字段數據作爲值,但是我需要檢查所有數據鑰匙有一個價值相關的其他明智我希望提交停止和用戶不得不編輯那裏的細節,然後重新提交,是否有一個快速檢查,我可以運行,而不是打破陣列分開,檢查或檢查之前是放在數組中與開關或if語句丟失?驗證數組中的每個元素?

回答

0

一個選擇是做兩個。

以字段名稱作爲鍵具有單獨的字段選項數組。現在

$fieldTypes = array('nameFirst' => 'name', 
        'nameLast' => 'name', 
        'phone'  => 'phone', 
        'email'  => 'email'); 
foreach($input as $key => $value) { 
    switch($fieldTypes[$key]) { 
     case 'name': 
      //run $value against name validation 
      break; 
     case 'phone': 
      //run $value against phone validation 
      break; 
     case 'email': 
      //run $value against email validation 
      break; 
     default: 
      //code here for unknown type 
    } 
} 

,即可以在任何數量的方式來使用,很容易擴展到包括的東西,如果需要的字段或沒有,甚至是錯誤的信息等。通過將$fieldTypes數組轉換爲多維數組或包含數據的對象數組。

這樣,如果您決定添加一個字段,它可能不會涉及驗證代碼中的太多更改。

0

如何像

<?php 
$arrayFilled = true; 
foreach($array as $key=>$value) { 
    $arrayFilled = trim($value) == '' ? false : $arrayFilled; 
    if($arrayFilled === false) { break; } 
} 
if($arrayFilled === false) { 
    echo "missing data"; 
} 
else { 
    echo "filled array"; 
} 

你可能要檢查的不僅僅是一個空字符串更多,但我把它留給你

+0

你可以選擇你的線? – Sampson 2009-01-23 16:22:21

1

Sico87,

更多的不是你不想同時測試所有的字段。例如,您可能有一個聯繫人字段,其中包含未授權的電話號碼條目選項,並且由於該原因而拒絕提交將會產生問題。

在很多情況下,單獨測試您的字段比較容易,因此您可以對每個字段進行特別的關注。您需要特別注意電子郵件地址,並特別注意生日。

從長遠來看,平等對待可能會造成非常嚴重的問題。

1
function fieldEmpty($value) { 
    return trim($value) == ''; 
} 

if (count(array_filter($array, 'fieldEmpty'))) { 
    die('bad'); 
} 
相關問題