如何更新此PHP验证案例以支持多维数组?

时间:2013-03-23 04:58:44

标签: php validation multidimensional-array

我正在使用仅支持一维数组的PHP验证脚本。

如何修改此开关案例以使多维数组有效?

目前,它只显示一个选择字段为空,当它实际上有一个选定的值时。

切换案例

case 'in-array' :
    if (!(in_array($value, $rule->criteria))) {
        $this->_errors[$rule->fieldname] = $rule->message;
        return;
    }
    break;

要求对州字段进行验证:

$validator->addRule('state', 'Please select a state', 'in-array', $states);

$validator->addEntries($_POST);
$validator->validate();

$entries = $validator->getEntries();

foreach ($entries as $key => $value) {
  ${$key} = $value;
}

状态数组:

$states = array('AL' => 'Alabama',
                'AK' => 'Alaska',
                'AZ' => 'Arizona',
                'AR' => 'Arkansas',
                'CA' => 'California',
                'CO' => 'Colorado',
                'CT' => 'Connecticut',
                'DE' => 'Delaware',
                'DC' => 'District Of Columbia',
                'FL' => 'Florida',
                'GA' => 'Georgia',
                'HI' => 'Hawaii',
                'ID' => 'Idaho');

1 个答案:

答案 0 :(得分:1)

看起来$value是数组键,而不是数组值。尝试将array_key_exists添加到case 'in-array' if -

if (!(in_array($value, $rule->criteria)) && !(array_key_exists($value, $rule->criteria)))
相关问题