Php 获得';致命错误:调用未定义的函数';在if语句中使用函数时?
好的,我刚刚完成了一个函数,用于验证表单上的Php 获得';致命错误:调用未定义的函数';在if语句中使用函数时?,php,function,validation,variables,if-statement,Php,Function,Validation,Variables,If Statement,好的,我刚刚完成了一个函数,用于验证表单上的firstname字段 此函数本身可以正常工作 但是,由于我想使此功能可重复用于多个网站,因此我添加了一个if语句来说明是否使用它。以下代码对此进行了解释: 相关PHP代码: //Specify what form elements need validating: $validateFirstname = true; //array to store error messages $mistakes = array(); if ($validat
firstname
字段
此函数本身可以正常工作
但是,由于我想使此功能可重复用于多个网站,因此我添加了一个if
语句来说明是否使用它。以下代码对此进行了解释:
相关PHP代码:
//Specify what form elements need validating:
$validateFirstname = true;
//array to store error messages
$mistakes = array();
if ($validateFirstname=true) {
//Call first name validation function
$firstname = '';
if (!empty($_POST['firstname'])) {
$firstname = mysql_real_escape_string(stripslashes(trim($_POST['firstname'])));
}
$firstname = validFirstname($firstname);
if ($firstname === '') {
$mistakes[] = 'Your first name is either empty or Enter only ALPHABET characters.';
}
function validFirstname($firstname) {
if (!ctype_alpha(str_replace(' ', '', $firstname))) {
return '';
} else {
return $firstname;
}
}
}
因此,如果($validateFirstname=true)没有这个if,代码运行良好,但在我添加它的那一刻;我收到以下错误消息:
Fatal error: Call to undefined function validFirstname()
在PHP中,您根本不能使用if
语句中的函数吗?我对用这种方式使用它们是相当陌生的
if($validateFirstname=true)
您在此处将值“true”赋值给$validateFirstname
您应该使用“==”进行比较,例如
if($validateFirstname==true)
这可能有助于解决你的“如果”问题
您在此处将值“true”赋值给$validateFirstname
您应该使用“==”进行比较,例如
if($validateFirstname==true)
这可能有助于解决在条件上下文中声明的“如果”问题(如if
body),您只能在声明后使用这些函数
if ($validateFirstname == true) {
//Call first name validation function
function validFirstname($firstname) {
// function body
}
// $firstname initialisation
$firstname = validFirstname($firstname);
// ...
}
(注意:将$validateFirstname=true
更改为$validateFirstname==true
,这应该是您想要的)在条件上下文中声明的函数(如if
body),您只能在声明后使用
if ($validateFirstname == true) {
//Call first name validation function
function validFirstname($firstname) {
// function body
}
// $firstname initialisation
$firstname = validFirstname($firstname);
// ...
}
(注意:将$validateFirstname=true
更改为$validateFirstname==true
,这应该是您想要的)条件函数(在条件中定义的函数)必须在引用它们之前进行定义。
函数在被引用之前不需要定义,除非
函数是有条件定义的,如两个示例所示
下面
以条件方式定义函数时,例如
举例说明。其定义必须在被定义之前进行处理
打电话来
因此,如果您想这样使用它,您应该将它放在if条件的开头或条件之外
// Either:
if ($validateFirstname==true) {
function validFirstname($firstname) {}
}
// Or, and I'd rather do it this way, because function is
// created during "compilation" phase
function validFirstname($firstname) {}
if ($validateFirstname==true) {
// ...
}
此外,该函数(即使在条件内创建)也不会推送到全局范围:
PHP中的所有函数和类都具有全局作用域——它们可以在函数外部调用,即使它们是在函数内部定义的,反之亦然
因此,一旦对代码求值,它是在条件内声明还是有意在全局范围内声明并不重要。条件函数(在条件内定义的函数)必须在引用它们之前定义。
函数在被引用之前不需要定义,除非
函数是有条件定义的,如两个示例所示
下面
以条件方式定义函数时,例如
举例说明。其定义必须在被定义之前进行处理
打电话来
因此,如果您想这样使用它,您应该将它放在if条件的开头或条件之外
// Either:
if ($validateFirstname==true) {
function validFirstname($firstname) {}
}
// Or, and I'd rather do it this way, because function is
// created during "compilation" phase
function validFirstname($firstname) {}
if ($validateFirstname==true) {
// ...
}
此外,该函数(即使在条件内创建)也不会推送到全局范围:
PHP中的所有函数和类都具有全局作用域——它们可以在函数外部调用,即使它们是在函数内部定义的,反之亦然
因此,一旦代码被评估,它是在条件内声明还是有意在全局范围内声明并不重要。这不是您想要做的:if($validateFirstname=true)
这不是您想要做的:if($validateFirstname=true)
感谢@Vyktor!现在完全有意义了。:-)谢谢@Vyktor!现在完全有意义了。:-)