我正在使用仅支持一维数组的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');
答案 0 :(得分:1)
看起来$value
是数组键,而不是数组值。尝试将array_key_exists
添加到case 'in-array'
if -
if (!(in_array($value, $rule->criteria)) && !(array_key_exists($value, $rule->criteria)))