PHP函数未定义的variables问题
我是一个PHP新手,所以我有一个小问题的function。 我有这样的代码行:
<?php $ime=$_POST["ime"]; $prezime=$_POST["prezime"]; $pera="string"; if (empty($ime)||empty($prezime)){ echo "Ne radi, vrati se nazad i unesi nesto!"; } function provera($prom){ if (preg_match("/[0-9\,\.\?\>\.<\"\'\:\;\[\]\}\{\/\!\\\@\#\$\%\^\&\*\(\)\-\_\=\+\`[:space:]]/",$prom)){ echo "Nepravilan unos imena ili prezimina!"; echo $pera; } } provera($ime); provera($prezime); ?>
无论如何,当我尝试这个代码时,我总是会得到一个错误信息,说明第11行(粗体部分代码)有错误,并且没有variables被回显。 我猜测它给了我这个错误,因为我的variables没有在该函数内部定义,但我需要在函数外定义它,所以有办法做到这一点?
这是因为你在函数内部使用了$pera
variables(它只存在于全局范围内)。
有关更多信息,请参阅variables作用域上的PHP手册页 。
你可以通过添加global $pera;
来解决这个问题global $pera;
在你的职能范围内,尽pipe这不是一个特别优雅的方法,因为全局variables因为详细的原因而被忽略了。 因此,接受$pera
作为你的职能的一个论据将是更好的如下:
function provera($prom, $pera){ if (preg_match("/[0-9\,\.\?\>\.<\"\'\:\;\[\]\}\{\/\!\\\@\#\$\%\^\&\*\(\)\-\_\=\+\`[:space:]]/",$prom)){ echo "Nepravilan unos imena ili prezimina!"; echo $pera; } }
这听起来像你没有在你的$ peravariables中设置。 如果你不得不在一个函数之外定义一个variables,试着把它的值作为parameter passing给你的函数。
function echoMyVar( $myVar ) { echo $myVar; } $p = "toto"; echoMyVar($p);
你不能在方法中使用$pera
,因为它没有在方法范围内定义。
如果要使用该方法,请将其作为parameter passing。
function provera($prom, $pera){ //passed as a param if (preg_match("/[0-9\,\.\?\>\.<\"\'\:\;\[\]\}\{\/\!\\\@\#\$\%\^\&\*\(\)\- \_\=\+\`[:space:]]/",$prom)){ echo "Nepravilan unos imena ili prezimina!"; echo $pera; }
在你的函数provera($ prom)添加一行说
global $pera;