我有一个验证函数返回true或false.
但是,我希望它提供有关问题的信息,当有问题时.
假设函数是这样的:
function is_valid($val) {
$result = true;
if( rule_1_not_met ) $result = false;
if( rule_2_not_met ) $result = false;
return $result;
}
Run Code Online (Sandbox Code Playgroud)
这是用的
$val = $_GET['some_param'];
if(!is_valid($val)) $out .= 'Not so helpful feedback.';
...
Run Code Online (Sandbox Code Playgroud)
我以为我可以改变它:
function is_valid($val) {
$result = array(true, array());
if( rule_1_not_met ) $result[1][] = 'Reason 1';
if( rule_2_not_met ) $result[1][] = 'Reason 2';
if(count($result[1]) > 0) $result[0] = false;
return $result;
}
Run Code Online (Sandbox Code Playgroud)
并像这样使用它:
$val = $_GET['some_param'];
$validation_result = is_valid($val);
if(!$validation_result[0]) $out .= implode('<br/>', $validation_result[1]);
...
Run Code Online (Sandbox Code Playgroud)
我的问题是
PS会使这个社区维基
Sha*_*ngh 12
你是在正确的轨道,但我想这样做
function is_valid($val,&$mes) {
$result = true;
if( rule_1_not_met ) { $mes[]='message one'; $result = false; }
if( rule_2_not_met ) { $mes[]='Message two'; $result = false; }
return $result;
}
$mes=array();
if(isvalid($val,$mes) ===false) $out .= implode('<br/>', $mes);
Run Code Online (Sandbox Code Playgroud)