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没有在该函数内部定义,但我需要在函数外定义它,所以有办法做到这一点?

这是因为你在函数内部使用了$peravariables(它只存在于全局范围内)。

有关更多信息,请参阅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;